ctrlp是一款支持对文件、缓冲区( :CtrlPBuffer
)、MRU(Most Recently Used)文件( :CtrlPMRU
)和标签进行模糊搜索/查找的Vim插件,也支持通过正则表达式搜索 ( <Ctrl>-r
进行切换),同类软件还有模糊搜索插件fzf等。
ctrlp使用纯vimscript语言实现,依赖少且配置简单,是一款使用量非常大的Vim插件。
1. ctrlp安装
可以使用Vim插件管理器Vundle或vim-plug安装ctrlp插件。
若使用Vundle安装ctrlp,需要在Vim配置文件 ~/.vimrc
中新增 Plugin 'ctrlpvim/ctrlp.vim'
;若使用vim-plug安装ctrlp,需要在Vim配置文件中新增 Plug 'ctrlpvim/ctrlp.vim'
,具体安装方法可以参考Vim教程网上对应插件管理器的使用方法介绍。
完整完ctrlp插件后,可以在Vim命令行模式下使用命令 :help ctrlp.txt
获取ctrlp的官方说明文档,这是个非常详细的文档,建议细读。
2. ctrlp命令介绍
在Vim命令行模式下,可通过以下几种方式启动ctrlp:
- Vim命令行模式下使用命令
:CtrlP
或:CtrlP 路径
可以调用ctrlp并进入查找文件模式,可通过设置let g:ctrlp_cmd = 'CtrlP'
来指定打开ctrlp的Vim命令行命令 - Vim命令行模式下使用命令
:CtrlPBuffer
或:CtrlPMRU
可以调用ctrlp并分别进入查找缓冲区 和 查找 MRU文件模式 - Vim命令行模式下使用命令
:CtrlPMixed
可同时搜索 文件、缓冲区 和 MRU文件
此外,在Vim 普通模式下,默认按下 <Ctrl>+p
即可打开ctrlp搜索窗口。可通过设置 let g:ctrlp_map = '<c-p>'
来修改Vim普通模式下默认打开ctrlp的Vim按键映射(change the mapping to invoke CtrlP in Normal mode)。
默认设置下,ctrlp的窗口显示在Vim窗口的底端(bottom),可以通过 g:ctrlp_match_window
选项设置窗口的位置,例如,let g:ctrlp_match_window = 'top,order:ttb,min:1,max:10,results:20'
设置ctrlp窗口显示在顶端(top),模糊搜索结果按从上到下(ttb, top to bottom)的顺序显示,高度最小为1行,最大为10行,搜索结果最多显示20行。
一旦打开ctrlp,即可输入要寻找的文件名使用ctrlp进行模糊搜索,可以使用以下命令进行操作:
- 按下
Esc
或<Ctrl-c>
可退出ctrlp,返回到Vim窗口中 - 按下
F5
用于刷新当前操作路径下的文件缓存,可以使用命令let g:ctrlp_cache_dir = $HOME.'/.cache/ctrlp'
设置缓存文件存放路径 - 使用
<Ctrl-k>
和<Ctrl-j>
在模糊搜索结果列表中上下移动 (当然也可以使用键盘上的上下方向键) - 使用
<Ctrl-f>
和<Ctrl-b>
在查找文件模式、查找缓冲区模式、查找MRU文件几种模式间进行切换 (cycle between modes) - 使用
<Ctrl-d>
在 路径匹配 和 文件名匹配 之间切换 (switch to filename search instead of full path) ,可以通过设置let g:ctrlp_by_filename = 1
来设置默认使用 文件名匹配 模式进行模糊搜索 - 使用
<Ctrl-r>
在 字符串模式 和 正则表达式模式 之间切换 (switch to regexp mode) - 使用
<Ctrl-t>
在新的Vim标签页中打开文件 (open the selected entry in a new tab) - 使用
<Ctrl-v>
垂直分割窗口打开文件 - 使用
<Ctrl-x>
水平分割窗口打开文件 - 使用
<Ctrl-p> 或
` 选择前或后一条历史记录 <Ctrl-y>
用于当搜索的目标文件不存在时创建文件及父目录 (create a new file and its parent directories)- 使用
<Ctrl-z>
标记或取消标记多个文件, 标记多个文件后可以使用<Ctrl-o>
同时打开多个文件 (mark/unmark multiple files and to open them)