英文原文: vim plugins that I use
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_rget_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 增加了两个有用的东西。第一个列位于 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
,可以更改光标下单词的背景颜色,以及文件中出现的所有相同单词。你还可以使用n
和N
来跳转到下一个 / 上一个高亮显示的单词。当你处理复杂的代码并需要跟踪多个变量的使用情况时,它非常有用。
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 >cursor here</div>
,那么这个插件将突出显示<div>
和</div>
标签。
38. Matchup
Matchup 添加了快捷方式%
,允许你在匹配的括号对之间快速跳转。如果你的光标在{字符上,那么按 % 后它将跳到}。如果你再次按 %,它将跳回{
。它还添加了快捷方式z%
,使你可以向前跳转到下一对圆括号内。假设你有一个函数print_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
函数的改进版本。内置的:ilis
t 函数来自一个计算机没有多少内存的时代,所以它当时不是很有用,因为它会一股脑把所有东西都打印到屏幕上,你无法使用这样的结果(见上文的 Bufferize 插件)。改进后的:Ilist
函数从结果中创建一个 quickfix 列表。你现在可以运行:Ilist pattern
,这个插件将在当前以及包括的项目文件中找出所有用到的单词模式,并把它们放在 quickfix 窗口中,正是你想要显示所有结果的地方。
45. Quickfix-reflector
你不仅希望筛选 quickfix 结果(上面的 Qfgrep),还希望编辑 quickfix 窗口,就好像它只是另一个缓冲区一样。这个插件使得 quickfix 窗口可以修改。现在可以使用dd
删除 quickfix 条目,使用i
添加新条目。你还可以直接编辑 quickfix 结果,当你通过:w 保存 quickfix 窗口时,文件也会得到更新。
46. Ranger
这个插件让你可以跳转到外部 Ranger 文件管理器,在 vim 中打开一个文件。它类似于 Dirvish(见上文),让你可以轻松地进行缓冲区驱动的开发。当你在任何窗口中运行:Ranger
命令时,它将启动ranger
进程。然后,当你选择一个文件时,它将在选择的文件中作为一个新的缓冲区打开。
47. Repeat
Repeat 改进了.
命令。它让你可以重复其他插件的命令和动作。例如,如果你使用 Surround 插件(见下文)将文本括在引号中,那么按下.
会重复这个动作。
48. Rooter
由于 vim 不是 IDE,所以它几乎没有项目的概念,也不知道项目的根目录是什么。当你尝试打开一个文件时,vim 会搜索主目录或其他目录,而不是项目目录。
这个插件会自动将 vim 的当前工作目录设置为项目目录,使得处理项目变得更加简单。它通过查找最根部的.git
目录来实现。通常,此类目录表明了项目的起点。
49. Scratch
Vim 的文档提到了一种称为 scratch 缓冲区的特殊缓冲区类型。这个插件实现了它。Scratch 缓冲区是临时丢弃缓冲区。当你在做一个项目的时候,快速笔记是很有用的。使用:Scratch
命令打开它。光标将跳转到顶部的 scratch 窗口。当你将光标移动到另一个窗口时,scratch 窗口将自动关闭。
50. Signature
当使用标记时,没有一种可视化的方式来告诉你在哪里添加了它们。你可能记得一两个标记,但当你再加的时候,你就迷失了。这个插件解决了这个问题,它会在最左边的列中显示标记。你可以用默认快捷方式ma
、mb
、…添加和切换标记,用dma
、dmb
、…删除单个标记,用m-
删除所有标记,用]'
和['
跳到下一个和前一个标记,用m/
将所有标记放到位置列表窗口中。
51. Speeddating
在正常模式下,ctrl+a
和ctrl+x
可以实现数值递增和递减。这个插件使这些键盘快捷键也可以实现日期和时钟时间的增加。例如,如果光标位于字符串2000-01-31
上时,按ctrl+a
将使其变为2000-02-01
,按ctrl+z
将使其变为2000-01-30
。
52. Swap
Swap 让你可以快速地交换单词或逗号分隔的函数参数。例如,如果你有一个函数 print a, b, c),那么你可以按 g>,它会变成print b, a, c)
。按g<
,它会再次变成print a, b, c)
。你还可以通过按gs
进入可视化交换模式。然后使用 hjkl 键来交换参数。
53. Syntax-css3
CSS3 语法高亮插件。
54. Syntax-dockerfile
Dockerfile 语法高亮插件。
55. Syntax-html5
HTML5 语法高亮插件。
56. Syntax-i3config
i3 窗口管理器配置文件语法高亮插件。
57. Syntax-javascript
JavaScript 语法高亮插件。
58. Syntax-json
JSON 语法高亮插件。
59. Syntax-nginx
Nginx 配置文件语法高亮插件。
60. Syntax-php
PHP 语法高亮插件。
61. Syntax-tmux
tmux 配置文件语法高亮插件。
62. System-copy
Vim 终端没有用于从系统剪贴板复制和粘贴的寄存器*
或+
。这个插件添加了cp
快捷方式,通过调用外部实用程序xsel
将所选文本或 motion 复制到系统剪贴板。它还具有从系统剪贴板粘贴的快捷方式cv
。
63. Tabular
Tabular 的功能与 EasyAlign(见上文)相同。它对文本进行列对齐。与 EasyAlign 相比,它的一个优点是,你可以直接将用于对齐的正则表达式传给它。与正则表达式相匹配的位置将会对齐。例如:Tabular /regex
将创建整齐的regex
列。
64. Targets
掌握 vim 的一个步骤是学习使用文本对象。文本对象允许你操作整个文本结构,而不是单个字符。Vim 已经附带了许多文本对象——你可以访问单词、句子、段落和代码块。这个插件增加了十几个文本对象。例如,你可以使用di
删除逗号分隔的项,或者你可以使用cin
和cil
来更改前一个和后一个逗号分隔的项,你可以使用ci+
来更改 sum 元素,等等。
65. Textobj-user
从头编写自己的文本对象非常困难,因为在调用文本对象时必须精确复制 vim 的行为,并了解所有的陷阱和缺陷。这个插件提供了一个快速简单的接口,让你可以实现自己的文本对象。“textobj”插件有一个完整的生态系统,使用这个插件可以添加各种有用的文本对象。
66. Textobj-entire
这个插件使用 Textobj-user(见上文)创建一个文本对象 ie 和 ae 来操作整个文件。例如,要选择整个文件,你可以执行 vae,要删除整个文件,你可以执行 vaed 或 dae。
67. Textmanip
这个插件让你可以直观地移动选中的文本。例如,你能可视化地选择一个单词,然后使用快捷键 ctrl+h 和 ctrl+l 将其向左或向右移动。类似地,你可以使用快捷键 ctrl+j 和 ctrl+k 向下移动整个行。
68. Thesaurus-query
有了这个插件,你可以访问 Libreoffice 同义词典。一旦配置了它,你可以使用:Thesaurus word
命令来查找与 word 相关的所有单词,你还可以使用:ThesaurusW
来查找与光标下的单词相关的所有单词。
69. Tmux-complete
当你处于流程中时,会同时发生许多事情,并且会打开许多 tmux 窗口和窗格。一个显示 git 日志,另一个用于测试,还有一个显示帮助手册,等等。通常,你需要从 tmux 窗格获取信息到 vim。通常,你必须用鼠标来复制它,但这非常低效。有了这个插件,你可以在插入模式下按下 ctrl+x ctrl+u,从任何 tmux 窗口 / 窗格补全单词。它将提供来自所有 tmux 窗口 / 窗格的所有单词的列表。
70. Traces
当用:s/old/new
命令替换文本时,执行这个命令后才能看到更改。这个插件让你可以在输入时预览 old 匹配和用于替换的部分 new,你可以直接看到你是否做对了。
71. Undoquit
通常,你可能因为操作太快关闭了一个你不想关闭的窗口。有了这个插件,你现在可以按ctrl+w+u
撤消关闭操作。
72. Unicode
这个插件让你可以快速搜索和插入 Unicode 字符。例如,如果你想插入一个 Unicode 兔子符号,你可以输入 rabbit,然后按下 ctrl+x ctrl+z。输入文字 rabbit 将被“兔子”的表情符号取代。
73. Unimpaired
许多命令都是成对的。例如:bn
和:bp
跳到下一个 / 前一个缓冲区,:cn
和:cp
跳到下一个 / 前一个 quickfix 列表项,:ln
和:lp
跳到下一个 / 前一个位置列表项,等等。此插件为这些命令添加了灵活的快捷方式。你现在可以用]b
和[b
跳到下一个/
前一个缓冲区,用]q
和[q
跳到下一个 / 前一个 quickfix 条目,用]l
和[l
跳到下一个 / 前一个位置列表条目,等等。
74. vimade
当你使用多个分割窗口时,在短暂的分心之后,很容易忘记你在哪个分割窗口中工作。这个插件会淡化其他所有的分割线,使当前聚焦窗口的分割线清晰可见。
75. Visual-split
通常,你需要将注释、函数定义或代码片段在上方折叠,使其始终可见。通常的方法是用ctrl+w+s
分割窗口,然后用10ctrl+w+-
重新调整窗口大小。这个插件合并了这两个动作。现在你可以直观地选择该区域并按下ctrl+w+gss
。该插件将分割窗口并调整大小,使其与所选的行完全匹配。
76. Visual-star-search
有两个操作符可以搜索光标下的单词。它们是*
(向前搜索)和#
(向后搜索)。不幸的是,在可视化模式中,它们不会搜索可视化选择部分,你也不能搜索包含特殊字符的单词。例如,如果单词是 h#e#l#l#o,那么这些操作符将选择并搜索这个单词中的一个字母,这不是你想要的。
使用此插件,你可以搜索可视化选择的序列,它可以包含任何特殊字符。使用v
命令进行选择,然后按*
或#
进行搜索。
77. Writeable-search
Writeable-search 类似于 CtrlSF(见上文)。它让你可以快速查找结果并立即在结果窗口中编辑它们。当你运行:WritableSearch pattern
命令时,它将在当前目录中的所有文件中搜索这个 pattern,并打开一个包含结果的新选项卡。然后,你可以编辑结果,当你在相同的结果窗口中执行:w
操作时,它会更改更新文件。如果你已经在 quickfix 窗口中有一个要修复内容的列表,那么你可以通过:WritableSearchFromQuickfix
命令将它们转移到这个插件中进行编辑。