fzf是一个命令行工具,目前支持bash和zsh。
fzf配合autojump和vim,可以方便地在多层目录下进行文本编辑。
Before install fzf, download go binary package (go1.4.2.linux-amd64.tar.gz for now) extract it, and add its bin folder to $PATH. Then install fzf with git.
首先运行j demo
跳转到项目根目录下,项目文件结构如下:
$ tree
.
├── both
│ ├── collections.coffee
│ └── router.coffee
├── client
│ ├── index.html
│ ├── layout.coffee
│ ├── layout.html
│ ├── registerHelpers.coffee
│ ├── stylesheets
│ │ └── app.scss
│ └── templates
│ ├── addPost
│ │ ├── addPost.coffee
│ │ ├── addPost.html
│ │ └── addPost.scss
│ ├── editPost
│ │ ├── editPost.coffee
│ │ └── editPost.html
│ ├── lists
│ │ ├── lists.coffee
│ │ └── lists.html
│ ├── postView
│ │ ├── postView.coffee
│ │ └── postView.html
│ ├── sharePost
│ │ ├── sharePost.coffee
│ │ └── sharePost.html
│ ├── sideMenu
│ │ └── sideMenu.html
│ └── userAccounts
│ ├── accountsConfig.coffee
│ ├── userAccounts.coffee
│ └── userAccounts.html
├── LICENSE
├── newnote.tmp
├── packages
├── README.md
└── server
└── seeds.js
13 directories, 26 files
配置
全局定义:~/.fzf.zsh
默认快捷键可以在.fzf/shell/key-bindings.zsh中修改。 推荐将默认的文件搜索快捷键从Ctrl-T改成了Ctrl-J,需要避免使用的配置有:
-
Ctrl-I: 代表
键,虽然可以触发目录搜索,但 键的自动补全功能不能用了; -
Ctrl-M: 回车键的键值,如果改成了它,将导致回车键不可用,可以用Ctrl-Enter临时代替回车;
-
Ctrl-N: 下一条历史命令的快捷键。
使用
文件搜索
要编辑client/templates/lists/lists.coffee文件,只要在命令行中输入vi
然后按Ctrl-j,
就进入了fzf搜索界面,只要输入任意层目录中的几个字符,就可以匹配到目标文件,
例如上面lists.coffee文件,只要输入listco
就可以匹配到了。
其中当输入到list时,就匹配到了lists文件夹以及下面的两个文件,
这时可以继续输入"co",直接命中目标,也可以用Ctrl-j/k在列表中上下选择目标。
实际上fzf进行目录文件匹配的快捷键是Ctrl-T,但对vi进行了特殊定义,使得用
按Alt-C,选择好目录,可以直接切换到目标目录,相当于cd <Ctrl-T>
的快捷版。
Ctrl-R在命令行历史使用模糊匹配。
历史命令搜索
Ctrl-r激活搜索列表,然后模糊匹配;
可以使用多种配置格式,例如前缀、后缀、取反、严格一致等等,
例如搜索单词date
(而不是包含d,a,t,e
的任何字符串),在Ctrl-R后输入'date
,
详见文档对"extended-search mode"的说明。
进程搜索
输入kill
然后按Tab键显示系统进程列表,开始模糊搜索;