1. Alternate
 
  在 C 或 C++ 项目中,源文件和头文件常常成对出现。例如,utils.c和utils.h,你经常需要同时编辑这两个文件。使用 Alternate,你可以输入:A命令,在 .c 和 .h 文件之间快速切换。如果你在 .c 文件中,就会切换到 .h 文件,如果你在 .h 文件中,就会切换到 .c 文件。
 
  2. Bufexplorer
 
  要高效地处理多个文件,你需要使用几个不同的命令,如:ls(列出缓冲区)、:b(编辑缓冲区)、:bn(下一个缓冲区)和:bp(前一个缓冲区)。然而,通常情况下,在找到正确的文件之前,你的大部分时间都在键入:bn、:bn、:bn。
 
  Bufexplorer 使得在 vim 中处理多个文件变得轻而易举。它添加了\be键绑定(\是前导键),它会打开一个所有缓冲区的列表,移动到显示文件名的行并按回车键,你就可以快速切换到另一个缓冲区。
 
  3. Bufferize
 
  许多 vim 命令继承自 vi,它们的输出非常简陋。它们把输出打印到屏幕上,不能搜索或复制。如果你按空格太多次,内容就消失了。几乎不可能搜索这个文本,有时你甚至不知道如何让 vim 再次显示它。
 
  Bufferize 解决了这个问题。它接受一个 vim 命令并从其输出创建一个临时缓冲区,然后在一个分屏窗口中打开它。例如:Bufferize map将在一个新窗口中显示所有键盘映射,你可以搜索它们。要退出新窗口,只需使用常规的:q命令。
 
  4. Bufferline
 
  Bufferline 补充了 Bufexplorer(见上文),使它更容易处理多个文件 / 缓冲区。它在状态行中打印所有打开的文件及其缓冲区编号的列表。你只需要浏览一下这个列表,输入:b 5就可以切换到第 5 个文件 / 缓冲区,或者使用 Bufexporer,点击\be后面跟/5,然后回车。
 
  5. Bufkill
 
  如果你在一个分割中打开了两个缓冲区,并且你想要关闭一个缓冲区,那么你可以使用:bd命令。不幸的是,这个命令也关闭了分割。通常,你不想关闭分割,而只想关闭缓冲区。在这种情况下,使用 Buffkill 的:BD命令,该命令将关闭缓冲区,但保留分割。
 
  6. Characterize
 
  Characterize 添加了ga快捷方式,显示光标下 Unicode 字符的名称、代码点值和十六进制值。
 
  7. Clever-f
 
  此扩展改进了用于查找下一个 / 前一个字符的f和F快捷键。按下fa会转到下一个a。按下Fa会转到前一个a。没有这个扩展,你必须再次输入fa来找到下一个a或者按下分号;。类似地,你必须输入Fa或,才能再次找到前面的a。如果你是一个 vim 老手,你已经在用;和,,你最终会fafafafa或FaFaFaFa。
 
  有了这个扩展,你可以再按一次f,它会搜索下一个字符,你可以再按一次F,它会搜索前一个a,所以,不用fafafafa,你现在可以用fafaff代替FaFaFaFa,你可以FaFFF。此外,当你按下f或F时,它将显示下一个 / 前一个匹配项,你立即就知道光标将跳转到哪。
 
  8. Colorscheme-gruvbox
 
  深色系主题。灰色背景,浅绿色文字和功能。
 
  9. Colorscheme-jellybeans
 
  深色系主题。黑色背景,浅绿色文字,浅黄色功能。
 
  10. Colorscheme-seoul256
 
  深色系主题。灰色背景,淡蓝色文字,淡黄色功能。
 
  11. Commentary
 
  最简单、最快捷的注释插件之一。按gcc将整个行注释掉。按gc注释掉一个可视化选中部分。再次按下相同的快捷键取消注释。
 
  12. Conflicted
 
  这个插件有助于解决 git 合并冲突。假设你刚从 github 上的项目主分支中取出代码,遇到了一个合并冲突错误。要解决这个问题,可以运行这个插件提供的:Conflicted命令。该命令创建一个三向 diff,并将结果放在三个垂直分割的窗口中。左边的分割是上游更改,中间的分割是工作更改,右边的分割是本地更改。你可以接受上游 diff 或本地 diff 来解决冲突。为快速接受正确的 diff, Conflicted 提供了两个键映射。dgu命令将使用上游 diff,dgl将使用本地 diff。要解决下一个冲突,使用:GitNextConflict命令。如果没有更多的冲突,vim 将退出,你可以git commit已解决冲突的文件。
 
  13. Ctrlp
 
  这个插件添加了ctrl+p绑定来打开一个模糊文件打开对话框。例如,如果你需要编辑math-config.json文件,你可以键入文件名的一些字母,如mat.js、mjson,甚至thfig(“th”是“math”的最后两个字母,“fig”是“config”的最后三个字母)。Ctrlp 将立即缩小搜索范围,并提供最佳匹配。它还可以用来打开 mru 文件(最近使用的文件)和缓冲区,你可以使用ctrl+r和ctrl+f快捷键在文件 /mru/ 缓冲区模式之间切换。
 
  14. Ctrlp-funky
 
  Ctrlp-funky 通过添加函数查找模式扩展了上面的 Ctrlp 插件。你可以运行:CtrlPFunky命令,立即在函数搜索模式下打开 Ctrlp,或按下ctrl+p打开 Ctrlp,然后按ctrl+r(或ctrl+f)几次,进入函数搜索模式。例如,如果你有一个void debug_print ()函数,你可以输入vodepr(单词 void、debug、print 的前两个字母),然后回车,vim 将跳转到这个函数的定义。
 
  15. Ctrlsf
 
  有了这个插件,你可以快速搜索和替换大量的文本。当你运行:CtrlSF模式命令时,它将在左侧创建一个包含所有匹配项的结果窗口。“结果”窗口中还有一些围绕匹配项的上下文行,方便你知道你正在查看的是否是正确的匹配项。现在,你可以直接在结果窗口中进行编辑。当你保存结果窗口时,更改也将保存在文件中。你也可以按下回车键,在右边的窗口中打开每个结果并在那里编辑它。
 
  16. Delimitmate
 
  Delimitmate 会自动关闭引号和括号。例如,你输入“会自动得到“”,而且光标位于两个引号之间。
 
  17. Diff-enhanced
 
  这个插件为 vimdiff 添加了一个新的 diff 可视化方法,它试图最小化差异的数量。当你处于 diff 模式时,输入:EnhancedDiff patience命令,你就能够更好地查看 diff。
 
  18. Dirvish
 
  Dirvish 支持惯用的缓冲区驱动开发,它作为一个文件浏览器补充了 Nerdtree(见下文)。当你按下-键时,当前缓冲区将变成一个文件浏览器。你将看到当前工作目录或当前打开的文件目录中的所有文件。然后可以使用箭头键 hjkl 和搜索操作符/导航这个目录并查找文件。当你按下回车键时,Dirvish 将退出,光标下的文件将在当前窗口中打开,作为一个新的缓冲区。当你有多个分割打开时,这个插件特别强大,因为你可以指定下一个文件在哪个分割中打开。你只需导航到分割,点击-,找到文件,然后点击回车,就可以在希望的分割中打开它了。
 
  19. Dsf
 
  Dsf 是删除周围函数的缩写。通过在函数调用中按下dsf,它将删除周围的函数名。例如,如果你有像print_r(get_posts (true))这样的代码,并且你的光标位于字符所在的位置,那么当你按下dsf时,你将获得输出get_posts (true)。
 
  20. Easy-align
 
  有了这个扩展,你就可以整齐地将文本对其到列中。它添加了:EasyAlign命令,你可以将其绑定到你想要绑定的任何键盘快捷键。当你执行它时,它会要求你输入列分隔符字符,然后对所选文本进行格式化。例如,要对齐代码使所有=符号都在同一列中,你可以使用V命令直观地选择行,然后运行:EasyAlign,接着=,然后回车。
 
  21. Easymotion
 
  Easymotion 让你可以更快地在文件中导航。它添加了\\ w快捷方式,允许你快速跳转到光标之后的任何单词。它为每个单词分配一个唯一的字母,当你下次按下它时,光标会立即跳转到该单词。它还添加了\\b快捷方式,让你可以快速地向后导航。类似地,如果你需要跳转到上面或下面的任何一行,你可以使用\\k和\\j快捷键。
 
  22. Exchange
 
  使用 Exchange 插件,你可以非常快速地交换两个单词。转到第一个单词并按cxw,然后转到第二个单词并再次按cxw。你就完成了这两个词位置的交换!
 
  实际上,你不仅可以交换两个词,还可以交换任何两个 motion。按下cx后,下一个快捷键是 motion(motion 是移动光标的键盘快捷键)。例如,要交换两个字符,可以执行cxl,然后再执行cxl(l 是将光标向右移动一个位置的动作)。类似地,要交换两个句子,你可以执行cxis,然后对第二个句子也执行cxis操作。在这种情况下,motion 是选择整个句子。
 
  同样,如果两个 motion 相同,只要按一下.重复第一个操作。
 
  23. Expand-region
 
  通常,你希望选择比刚刚选择的文本多一点的文本。例如,你使用viw选择了一个单词,但随后发现需要选择整个引用字符串。有了这个插件,你可以按+,它会把当前的选择扩展到下一个最大的文本对象。从字符到一个单词、一个带引号的字符串、一行、一段到整个文件。
 
  24. Far
 
  Far 使查找和替换多个文件中的文本变得很容易。它添加了:Far pattern1 pattern2命令。当你运行这个命令时,它将屏幕分成两半。在上半部分,它显示了pattern1匹配的所有文件和行。在下半部分,可以预览匹配的上下文。在上面的分割中,你可以使用 hjkl 键来导航匹配项。默认情况下,所有匹配项都将用pattern2替换,但你也可以使用t键取消匹配项的标记(并再次使用 t 标记它们)。选择要替换的所有匹配项之后,运行:Fardo命令。这个命令将执行实际的替换。
 
  Far 也很适合于查找所有匹配项。你可以使用:F pattern命令,它将查找所有匹配的模式,并把它们显示在两个分割中,但是它不会执行替换。
 
  25. Fugitive
 
  使用 Fugitive,你可以直接从 vim 使用 git。它添加了:Git命令(或简写为:G),该命令运行git status,并在一个分割窗口中显示结果。然后,可以使用键盘快捷键s来暂存(git add)一个文件,使用u来恢复(git reset)一个文件。暂存文件之后,可以按cc创建提交。我还不知道如何进行 git 推送,所以这是我需要学习的内容。如果我能够在不离开 vim 的情况下进行代码推送和部署,那将非常方便。
 
  26. Fzf
 
  Fzf 是 Ctrlp(见上文)的一个替代方案。它为快速打开文件和切换缓冲区添加了几个命令。这些命令是:Files和:Buffers。如果你以前是按多次 tab 键来补全文件名和缓冲区名,那么现在你只需要键入文件名或缓冲区名的几个字母。例如,如果你需要打开options.c文件,你可以直接输入opt.c,甚至是oc,Fzf 都会为你提供最佳匹配。
 
  27. Fzf-mru
 
  Fzf-mru 增加了一个可以通过:FZFMru命令访问的 mru 模式。此模式允许你快速访问最近编辑的文件。假设你昨天在从事 scraper 项目相关的工作。今天,当你进入 mru 模式时,只需要输入scra,它就会显示你昨天处理的 scraper 项目的所有文件。
 
  28. Gitgutter
 
  Gitgutter 增加了两个有用的东西。第一个列位