在 iTerm2 中使用 fzf 得到历史命令的输出

2015-05-17 00:52:21 +08:00
 lululau

fzf 是一个通用的 CLI Fuzzy Finder,也提供 vim 插件,CLI工具控们如果还没用过的话,那就赶紧的吧:

https://github.com/junegunn/fzf

可以通过 iTerm2 提供的 OSAScript 接口得到当前 Terminal Session 的内容,然后传递给 fzf,然后你自己在 fzf 选择想要的内容。

效果:

asciinema

使用方法:

  1. 安装 fzf 后(安装时确保选择了 key-binding 配置),找到 key-bindings.zsh 文件,在最下面那一行 fi 的上面插入如下内容:
fzf-iterm2-widget() {
  iterm_text=$(echo 'tell app "iTerm" to get text of current session of current terminal' | osascript  | sed -n '/^\s*$/!p' | perl -e 'print reverse <>')
  LBUFFER="${LBUFFER}$(cat <<EOF | fzf
$iterm_text
EOF
)"
  zle redisplay
}
zle     -N   fzf-iterm2-widget
bindkey '\eo' fzf-iterm2-widget
  1. 打开一个新的 iTerm2 Session,运行几个命令,然后按 <Option>-o,就会在 fzf 中看到当前Session 中得所有文本内容,包括输入的和输出的。

缺点是:

* 只能选择一行内容 。
* 只能选择当前 Session 的内容
* 下面给出的方法只适用于 zsh,bash 的话照葫芦画瓢改一改应该也比较简单

6477 次点击
所在节点    分享创造
3 条回复
dsdshcym
2015-05-17 08:24:57 +08:00
想到了 percol
introom
2016-11-29 23:29:41 +08:00
虽然软件没有国界,,,我还是支持日系的 peco/percol...而不是棒子的。
dcoder
2017-06-24 11:41:01 +08:00
@lululau
最近在用 ubuntu 上用 fzf, 还发现一个缺点
Ctrl+t 查找文件的时候, file list 是从上到下, 选择的光标停在最上面;
Ctrl+r 查找历史的时候, list 是从下到上, 选择的光标停在最下面.

我觉得查找历史那个不爽, 能改成跟查找文件一样, 就好了,不知道如何设置.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/191627

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX