ctrlp是一款支持对文件、缓冲区( :CtrlPBuffer )、MRU(Most Recently Used)文件( :CtrlPMRU )和标签进行模糊搜索/查找的Vim插件,也支持通过正则表达式搜索 ( <Ctrl>-r 进行切换),同类软件还有模糊搜索插件fzf等。

ctrlp使用纯vimscript语言实现,依赖少且配置简单,是一款使用量非常大的Vim插件。

1. ctrlp安装

可以使用Vim插件管理器Vundlevim-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)

vim-ctrlp

嗯,扫一扫就可以找到小女子我啦~