fzf 是一个通用的 CLI Fuzzy Finder,也提供 vim 插件,CLI工具控们如果还没用过的话,那就赶紧的吧:
https://github.com/junegunn/fzf
可以通过 iTerm2 提供的 OSAScript 接口得到当前 Terminal Session 的内容,然后传递给 fzf,然后你自己在 fzf 选择想要的内容。
效果:
使用方法:
- 安装 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
- 打开一个新的 iTerm2 Session,运行几个命令,然后按
<Option>-o,就会在 fzf 中看到当前Session 中得所有文本内容,包括输入的和输出的。
缺点是:
* 只能选择一行内容 。
* 只能选择当前 Session 的内容
* 下面给出的方法只适用于 zsh,bash 的话照葫芦画瓢改一改应该也比较简单