好用的82款Vim插件

1.Alternate

在C或C++项目中,源文件和头文件常常成对出现。例如,utils.cutils.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

此扩展改进了用于查找下一个/前一个字符的fF快捷键。按下fa会转到下一个a。按下Fa会转到前一个a。没有这个扩展,你必须再次输入fa来找到下一个a或者按下分号;。类似地,你必须输入Fa才能再次找到前面的a。如果你是一个vim老手,你已经在用;,,你最终会fafafafaFaFaFaFa

有了这个扩展,你可以再按一次f,它会搜索下一个字符,你可以再按一次F,它会搜索前一个a,所以,不用fafafafa,你现在可以用fafaff代替FaFaFaFa,你可以FaFFF。此外,当你按下fF时,它将显示下一个/前一个匹配项,你立即就知道光标将跳转到哪。

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.jsmjson,甚至thfig(“th”是“math”的最后两个字母,“fig”是“config”的最后三个字母)。Ctrlp将立即缩小搜索范围,并提供最佳匹配。它还可以用来打开mru文件(最近使用的文件)和缓冲区,你可以使用ctrl+rctrl+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_post|s(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增加了两个有用的东西。第一个列位于vim最左边,它快速显示当前文件的git diff信息。你可以快速查看添加和更改了哪些行。第二个是]c[c映射,让你可以在更改的行之间跳转。

29.Goyo

我最近切换到Goyo模式编程。当你输入:Goyo命令时,这个插件会将内容居中,并删除行号和状态行,这样你就可以专注于无干扰的编码了。如果还让vim全屏,那就更好了。

30.Grepper

Grepper改进了vim中的查找,并增加了对ripgrep的支持。你可以输入:Grepper,然后输入你的搜索查询,它将找到所有匹配项并在quickfix窗口中加载它们。然后你可以使用vim的:cn:cp命令来导航到下一个/前一个匹配项,或者使用Unimpaired插件(见下文)的快捷方式]q[q

这个插件的作者建议将它与qfenter.vim插件一起使用。这是我还要尝试的东西。

31.Gv

Gv将git提交浏览器添加到vim中。你可以运行:GV命令,它将显示整个提交树。然后,你可以在提交窗口中按下回车或o来查看各个差异。要退出diff查看器,请按q。如果你只对当前文件的git日志感兴趣,那么可以使用:GV!命令。

32.Illuminate

Illuminate高亮显示当前可见缓冲区中光标下这个单词的所有出现。例如,如果光标在单词var上,那么所有其他的var也将高亮显示。

33.Interestingwords

这个插件允许你同时高亮显示多个单词。它添加了快捷方式\k,可以更改光标下单词的背景颜色,以及文件中出现的所有相同单词。你还可以使用nN来跳转到下一个/上一个高亮显示的单词。当你处理复杂的代码并需要跟踪多个变量的使用情况时,它非常有用。

34.Linediff

Linediff让你可以快速比较两个文本块。可视地选择第一个文本块并运行:Linediff命令。然后可视地选择第二个块并再次运行相同的命令。这个插件将创建一个新的标签页,将两个文本块的差异垂直分割。如果结果看起来太冗长,运行:EnhancedDiff patience命令(来自上面的Diff-enhanced插件)来改进差异。

你还可以使用这个插件快速解决git合并冲突。如果你打开的文件中存在合并冲突,将光标放在合并冲突标记<<<<<<>>>>>之间,并运行:LinediffMerge命令。接下来,插件会自动创建一个垂直分割,分割合并冲突差异,你可以在左边或右边的分割中进行编辑,并通过运行:LinediffPick命令来自动解决合并。

35.Listtoggle

一旦你对vim的熟练达到了一定的程度,你将开始一直使用quickfix窗口(以及位置列表窗口)。查找结果将在quickfix中,linting错误将在quickfix中,编译错误将在quickfix中,待办事项列表将在quickfix中。一切都会很快解决。你会一直关闭和打开quickfix。不幸的是,没有简单的方法来切换quickfix窗口和位置列表窗口。你必须使用:copen:cclose命令来打开/关闭quickfix,以及:lopen:lclose来打开/关闭位置列表。这打字太多了。

Listtoggle使它更加简单,并增加了两个快捷方式来快速切换它们。\q绑定将切换quickfix窗口,而\l绑定将切换位置列表窗口。

36.Locate

通常,你需要查找当前文件中的所有出现。你不想来一次全局搜索,你不想搜索和替换,你不想要任何分割,你只想要一个所有结果的总览。Locate通过:Locate命令(或简写为:L)提供完全相同的功能。只需键入:L pattern,这个插件就会打开一个快速位置列表,其中包含当前文件中所有出现该模式的地方。你可以使用快捷方式\l切换位置列表(由Listtoggle插件提供,见上文),你还可以通过快捷方式]l(下一个结果)和[l(前一个结果)(由Unimpaired插件提供,见下文)来浏览结果。

37.Matchtagalways

这个插件突出显示了光标所在位置最内层的HTML打开和关闭标记。例如,如果光标在<div class="post">cursor here</div>,那么这个插件将突出显示<div></div>标签。

38.Matchup

Matchup添加了快捷方式%,允许你在匹配的括号对之间快速跳转。如果你的光标在{字符上,那么按%后它将跳到}。如果你再次按%,它将跳回{。它还添加了快捷方式z%,使你可以向前跳转到下一对圆括号内。假设你有一个函数pri|nt_data("hi", 7)和你的光标在|。然后,在按下z%之后,光标将出现在函数参数中。

39.Nerdcommenter

Nerdcommenter是另一个代码注释插件。借助Commentary (见上文),你可以使用gc快捷方式快速切换注释,但是Nerdcommenter提供了对注释的更多控制。例如,你可以使用\cm快捷方式执行多行注释,并使用\cA快捷方式在行尾添加注释。

40.Nerdtree

Nerdtree是一个文件管理器。它在vim的左侧显示当前项目的完整目录和文件树结构。要打开和关闭Nerdtree,请运行:NERDTreeToggle命令。方便起见,你可以将它绑定到快捷方式\t。当它打开时,你可以使用常规的hjkl键进行导航。使用键O打开项目中的所有目录,然后使用常规的/search操作符搜索文件。要在右侧打开光标下的文件,请按下ok键。要查看隐藏的文件,请使用I键。与Dirvish(见上文)相比,它支持文件管理器驱动的开发。Nerdtree总是在右侧打开文件,而不是指定在哪里打开文件。

41.Nerdtree-syntax-highlight

这个插件将语法高亮显示添加到Nerdtree中。现在,文件和目录有了不同的颜色。

42.Peekaboo

Vim有许多不同的寄存器。当你复制文本时,它会进入"寄存器。当你删除文本时,它会进入数字寄存器。然后还有小写和大写等寄存器供你个人使用。

当你要使用寄存器时,这个插件会预览它们。当你按下"键时,它会在右侧打开一个寄存器备忘单,你可以看到每个寄存器的内容并选择正确的寄存器。你还可以按空格键加大寄存器备忘单。

43.Qfgrep

Quickfix是vim最大的特性之一。不幸的是,一旦用结果填充了quickfix列表,它就会被冻结。你无法进一步过滤quickfix列表。这种行为不太合理,因为你总是希望细化结果。

Qfgrep允许你这样做。现在,你可以在quickfix窗口中过滤结果。使用\g快捷方式过滤结果,\v转换过滤结果,\r还原原始条目。它还添加了:QFGrepPat命令,该命令执行与\g相同的操作,:QFGrepPatV则执行与\v相同的操作。

44.Qlist

Qlist添加了:Ilist函数,它是vim内置的:Ilist函数的改进版本。内置的:ilist函数来自一个计算机没有多少内存的时代,所以它当时不是很有用,因为它会一股脑把所有东西都打印到屏幕上,你无法使用这样的结果(见上文的Bufferize插件)。改进后的:Ilist函数从结果中创建一个quickfix列表。你现在可以运行:Ilist pattern,这个插件将在当前以及包括的项目文件中找出所有用到的单词模式,并把它们放在quickfix窗口中,正是你想要显示所有结果的地方。

45.Quickfix-reflector

你不仅希望筛选quickfix结果(上面的Qfgrep),还希望编辑quickfix窗口,就好像它只是另一个缓冲区一样。这个插件使得quickfix窗口可以修改。现在可以使用dd删除quickfix条目,使用i添加新条目。你还可以直接编辑quickfix结果,当你通过:w保存quickfix窗口时,文件也会得到更新。

46.Ragtag

Ragtag为处理HTML标签添加了三个有用的键盘快捷键。第一个是ctrl+x/关闭任何打开的标签。例如,如果光标在

标签中,那么你可以立即闭合它并得到

。第二个是ctrl+ xSPACE,它根据刚刚输入的单词创建一个开始和结束标签。例如,如果你输入tag,然后立即按下这个快捷键,那么你将得到|,其中|是光标。第三种是ctrl+xENTER,它的工作方式与前一种快捷方式相同,但在两个标签之间放了一个空行。

47.Ranger

这个插件让你可以跳转到外部Ranger文件管理器,在vim中打开一个文件。它类似于Dirvish(见上文),让你可以轻松地进行缓冲区驱动的开发。当你在任何窗口中运行:Ranger命令时,它将启动ranger进程。然后,当你选择一个文件时,它将在选择的文件中作为一个新的缓冲区打开。

48.Repeat

Repeat改进了.命令。它让你可以重复其他插件的命令和动作。例如,如果你使用Surround插件(见下文)将文本括在引号中,那么按下.会重复这个动作。

49.Rooter

由于vim不是IDE,所以它几乎没有项目的概念,也不知道项目的根目录是什么。当你尝试打开一个文件时,vim会搜索主目录或其他目录,而不是项目目录。

这个插件会自动将vim的当前工作目录设置为项目目录,使得处理项目变得更加简单。它通过查找最根部的.git目录来实现。通常,此类目录表明了项目的起点。

50.Scratch

Vim的文档提到了一种称为scratch缓冲区的特殊缓冲区类型。这个插件实现了它。Scratch缓冲区是临时丢弃缓冲区。当你在做一个项目的时候,快速笔记是很有用的。使用:Scratch命令打开它。光标将跳转到顶部的scratch窗口。当你将光标移动到另一个窗口时,scratch窗口将自动关闭。

51.Signature

当使用标记时,没有一种可视化的方式来告诉你在哪里添加了它们。你可能记得一两个标记,但当你再加的时候,你就迷失了。这个插件解决了这个问题,它会在最左边的列中显示标记。你可以用默认快捷方式mamb、…添加和切换标记,用dmadmb、…删除单个标记,用m-删除所有标记,用]'['跳到下一个和前一个标记,用m/将所有标记放到位置列表窗口中。

52.Speeddating

在正常模式下,ctrl+actrl+x可以实现数值递增和递减。这个插件使这些键盘快捷键也可以实现日期和时钟时间的增加。例如,如果光标位于字符串2000-01-31上时,按ctrl+a将使其变为2000-02-01,按ctrl+z将使其变为2000-01-30

53.Splitjoin

Splitjoin让你可以将代码片段从单行语句切换到多行语句,反之亦然。假设你有一个单行HTML代码片段

hi

,然后按gS(分割),它将转换成一个多行HTML代码片段

\n hi \n

。如果你在这个多行代码段上按下gJ(合并),它将再次变为一个单行代码段。

54.Surround

借助Surround,你可以快速删除、更改和添加文本周围的匹配符号对。假设你有一个字符串"hello world"。按下ds",引号将被删除,字符串将变成hello world。按下c"‘键,双引号会变成单引号,字符串会变成’hello world’。你还可以按下cs"

,这将把引号改为

HTML标签

,字符串将变成

hello world

。如果你有一个普通的字符串hello world,那么要将它括在引号中,请使用v选择它,然后按S并输入包围符号。如果你有一个单词hello,你想把它用单引号括起来,按ysiw'

55.Swap

Swap让你可以快速地交换单词或逗号分隔的函数参数。例如,如果你有一个函数print(a, b, c),那么你可以按g>,它会变成print(b, a, c)。按g<,它会再次变成print(a, b, c)。你还可以通过按gs进入可视化交换模式。然后使用hjkl键来交换参数。

56.Syntax-css3

CSS3语法高亮插件。

57.Syntax-dockerfile

Dockerfile语法高亮插件。

58.Syntax-html5

HTML5语法高亮插件。

59.Syntax-i3config

i3窗口管理器配置文件语法高亮插件。

60.Syntax-javascript

JavaScript语法高亮插件。

61.Syntax-json

JSON语法高亮插件。

62.Syntax-nginx

Nginx配置文件语法高亮插件。

63.Syntax-php

PHP语法高亮插件。

64.Syntax-tmux

tmux配置文件语法高亮插件。

65.System-copy

Vim终端没有用于从系统剪贴板复制和粘贴的寄存器*+。这个插件添加了cp快捷方式,通过调用外部实用程序xsel将所选文本或motion复制到系统剪贴板。它还具有从系统剪贴板粘贴的快捷方式cv

66.Tabular

Tabular的功能与EasyAlign(见上文)相同。它对文本进行列对齐。与EasyAlign相比,它的一个优点是,你可以直接将用于对齐的正则表达式传给它。与正则表达式相匹配的位置将会对齐。例如:Tabular /regex将创建整齐的regex列。

67.Tagalong

这个插件可以很容易地重命名HTML的开闭标签对。你只需要重命名其中一个,这个插件会自动重命名另一个。例如,如果你有

,你把开标签

重命名为

,那么闭标签会自动重命名为

,你将得到输出

68.Targets

掌握vim的一个步骤是学习使用文本对象。文本对象允许你操作整个文本结构,而不是单个字符。Vim已经附带了许多文本对象——你可以访问单词、句子、段落和代码块。这个插件增加了十几个文本对象。例如,你可以使用di删除逗号分隔的项,或者你可以使用cincil来更改前一个和后一个逗号分隔的项,你可以使用ci+来更改sum元素,等等。

69.Textobj-user

从头编写自己的文本对象非常困难,因为在调用文本对象时必须精确复制vim的行为,并了解所有的陷阱和缺陷。这个插件提供了一个快速简单的接口,让你可以实现自己的文本对象。“textobj”插件有一个完整的生态系统,使用这个插件可以添加各种有用的文本对象。

70.Textobj-entire

这个插件使用Textobj-user(见上文)创建一个文本对象ie和ae来操作整个文件。例如,要选择整个文件,你可以执行vae,要删除整个文件,你可以执行vaed或dae。

71.Textmanip

这个插件让你可以直观地移动选中的文本。例如,你能可视化地选择一个单词,然后使用快捷键ctrl+h和ctrl+l将其向左或向右移动。类似地,你可以使用快捷键ctrl+j和ctrl+k向下移动整个行。

72.Thesaurus-query

有了这个插件,你可以访问Libreoffice同义词典。一旦配置了它,你可以使用:Thesaurus word命令来查找与word相关的所有单词,你还可以使用:ThesaurusW来查找与光标下的单词相关的所有单词。

73.Tmux-complete

当你处于流程中时,会同时发生许多事情,并且会打开许多tmux窗口和窗格。一个显示git日志,另一个用于测试,还有一个显示帮助手册,等等。通常,你需要从tmux窗格获取信息到vim。通常,你必须用鼠标来复制它,但这非常低效。有了这个插件,你可以在插入模式下按下ctrl+x ctrl+u,从任何tmux窗口/窗格补全单词。它将提供来自所有tmux窗口/窗格的所有单词的列表。

74.Traces

当用:s/old/new命令替换文本时,执行这个命令后才能看到更改。这个插件让你可以在输入时预览old匹配和用于替换的部分new,你可以直接看到你是否做对了。

75.Ultisnips

Ultisnips是一个代码片段引擎。当你按下tab键时,它会检查最后键入的Token并将其扩展为代码段。为了让它发挥作用,你需要创建一个language.snippets文件,并在其中写入代码片段。例如,你可以创建php.snippets,加入一个if代码段if ($1) { $0 }。现在,当你在编写PHP代码键入if并按下tab键时,它将扩展为if(|){},你的光标将位于|字符所在的位置。如果再次按下tab,它将跳转到if () { | }花括号之间的$0 Token。

76.Undoquit

通常,你可能因为操作太快关闭了一个你不想关闭的窗口。有了这个插件,你现在可以按ctrl+w+u撤消关闭操作。

77.Unicode

这个插件让你可以快速搜索和插入Unicode字符。例如,如果你想插入一个Unicode兔子符号,你可以输入rabbit,然后按下ctrl+x ctrl+z。输入文字rabbit将被“兔子”的表情符号取代。

78.Unimpaired

许多命令都是成对的。例如:bn:bp跳到下一个/前一个缓冲区,:cn:cp跳到下一个/前一个quickfix列表项,:ln:lp跳到下一个/前一个位置列表项,等等。此插件为这些命令添加了灵活的快捷方式。你现在可以用]b[b跳到下一个/前一个缓冲区,用]q[q跳到下一个/前一个quickfix条目,用]l[l跳到下一个/前一个位置列表条目,等等。

79.vimade

当你使用多个分割窗口时,在短暂的分心之后,很容易忘记你在哪个分割窗口中工作。这个插件会淡化其他所有的分割线,使当前聚焦窗口的分割线清晰可见。

80.Visual-split

通常,你需要将注释、函数定义或代码片段在上方折叠,使其始终可见。通常的方法是用ctrl+w+s分割窗口,然后用10ctrl+w+-重新调整窗口大小。这个插件合并了这两个动作。现在你可以直观地选择该区域并按下ctrl+w+gss。该插件将分割窗口并调整大小,使其与所选的行完全匹配。

81.Visual-star-search

有两个操作符可以搜索光标下的单词。它们是*(向前搜索)和#(向后搜索)。不幸的是,在可视化模式中,它们不会搜索可视化选择部分,你也不能搜索包含特殊字符的单词。例如,如果单词是h#e#l#l#o,那么这些操作符将选择并搜索这个单词中的一个字母,这不是你想要的。

使用此插件,你可以搜索可视化选择的序列,它可以包含任何特殊字符。使用v命令进行选择,然后按*#进行搜索。

82.Writeable-search

Writeable-search类似于CtrlSF(见上文)。它让你可以快速查找结果并立即在结果窗口中编辑它们。当你运行:WritableSearch pattern命令时,它将在当前目录中的所有文件中搜索这个pattern,并打开一个包含结果的新选项卡。然后,你可以编辑结果,当你在相同的结果窗口中执行:w操作时,它会更改更新文件。如果你已经在quickfix窗口中有一个要修复内容的列表,那么你可以通过:WritableSearchFromQuickfix命令将它们转移到这个插件中进行编辑。

英文原文:vim plugins that I use

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/w4AlNmGXU0JbEYqCbEgg
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券