迅速的在文件间切换是提高工作效率必不可少的功能之一,各种现代编辑器对此都有良好的支持。而只有朴实外表的元老级编辑器 vim 在这方面并没有落后。通常在初期熟悉 vim 的阶段,都会使用比较更接近普通编辑器操作的 NERDTree 插件,再打开一大堆 tab 进行编辑。快速定位一个 tab 并不容易,还会因为不同的 tab 打开的文件相同而产生混乱,这样显然缺乏效率。在 vim 中使用 buffer 编辑多文件会更加轻便,这当然不能少了插件的加持--使用 CtrlP 让你的操作更加得心应手。
齐全的帮助文档是 vim 插件的优良传统,CtrlP 自然也不例外。看过文档之后,会惊讶于它提供的功能要比预想中丰富的多。本文只介绍其中的一小部分,包括一些最必要和常用的操作,更多详细信息请使用 :help CtrlP
查看文档。
CtrlP 的用法看似很简单--普通模式下按 Ctrl+P
组合键,窗口底部会出现显示文件名的窗口和 CtrlP 的状态栏。重要的是状态栏的右侧,显示了当前 CtrlP 的工作路径。当在命令行输入文本时 CtrlP 会过滤这个路径和子目录下相匹配的文件。Ctrl+J
和 Ctrl+K
上下选择窗口中的文件,通常匹配程度高的结果在下,当前光标也位于最底部,因此 Ctrl+K
按键更为常用。选中文件后按 Enter
在当前窗口编辑,Ctrl+T
则会打开新的标签页。
以上便是最基本的用法,实际上只是几个按键的简单操作,下面会用更加简短的方式来列举一些使用的命令。
CtrlP 默认会根据版本控制软件的文件夹来确定当前项目路径。这使得 CtrlP 在 Git 管理的项目中比 SVN 更加方便, SVN 的项目中 CtrlP 只匹配当前文件夹下的文件而不是整个项目。
输入 ..
回车进入上一级目录,....
进入上两级目录,依此类推。每次切换到父级目录时会重新扫描文件,因此最好不要返回到太上层的目录中。按 Ctrl+C
可以阻止 CtrlP 继续扫描文件。
再命令行输入 :CtrlP
可以传递参数为工作路径,如 CtrlP %:h
为在当前文件目录中运行 CtrlP
@cd 进入指定CtrlP 工作目录,如 @cd %:h
指定当前文件夹为工作目录
输入文件名时可以按 Tab 键补全, Ctrl+N
, Ctrl+P
上下切换历史记录。
Shift+Tab
可以进入查询窗口,此时再按字母键,可以根据首字母定位到文件
输入文件名后按 Ctrl+Y
可以在当前目录下创建新文件
在 CtrlP 新添加的文件需要按 F5 刷新后才能够显示到匹配结果列表中
默认情况下,打开 CtrlP 后可以按 Ctrl+F
来在 file, buffer 和 mru 模式间切换。只有熟练使用 CtrlP 的各种模式才能够真正做到高效。例如当长时间编辑几个特定的文件时,buffer 模式就比 file 更为方便。mru 模式记录了最近打开的文件,是十分强大和实用的功能。在缺乏插件支持的情况下,vim 想要重新编辑一个已经退出的文件相当麻烦,mru 模式可以轻松的解决这个问题。此外 mru 模式的文件按照编辑顺序排列,十分符合直觉。
Ctrl+D
可以在 CtrlP 的 file 匹配模式和 path 匹配模式间切换,顾名思义,file 只匹配文件名,path 还可以匹配路径,适合在目录结构较深的项目中。
除了上面介绍的模式外 CtrlP 还包含很多其他模式,如 Dir,Line,Tag 等,具体可以参照文档。