命令行好帮手 fzf
Moevis
之前在查找命令行历史的时候,我的方法非常原始,先打几个字,然后用 zsh 自带的向上翻页找对应的命令。再进阶一点的就是用 history | grep xxx
来查找对应命令,或者是按 ctrl+r
来搜索历史,但是我觉得 ctrl+r
真是逆天地难用,键位还十分让人捉急。
今天在 hackernews 上看到 mcfly(https://github.com/cantino/mcfly ),用了小型神经网络来智能提示历史命令,但是我在使用时一直不 work,后来看到有评论说 fzf ( https://github.com/junegunn/fzf )不错,于是试了一下,果然很好用。
安装
首先是安装,在 mac 上安装很简单:
brew install fzf
我们需要用到命令行快捷键,可以用下面的命令注册快捷键:
(brew --prefix)/opt/fzf/install
我在我的 ubuntu 主机上安装是用下面的命令:
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install
使用
搜索文件
使用 alt+c
或者 esc+c
可以直接唤出 fzf,相当于直接敲命令:
fzf
你会看到一个全屏的列表,你可以用模糊搜索来搜文件名,或者是传入一个文件列表,手动选择文件名:
ls *.cpp | fzf
这样的交互就很友好了,加上 -m
配合 tab
键可多项选择。你还可以用 preview 功能,查看文件内容(这一点和 ranger 很像):
fzf --preview 'cat {}'
搜索命令
如果是想搜索命令历史的话,通过 ctrl+r
来触发,进入命令模式,随意打命令就可以用模糊搜索匹配到历史命令。
补全命令
fzf 的补全触发是用 **
符号,比如这样:
vim ~/code/**<tab>
然后你就可以通过 fzf 来选择 ~/code/
下面的文件,并把结果补到你的命令中。