在C或C++项目中,源文件和头文件常常成对出现。例如,utils.c
和utils.h
,你经常需要同时编辑这两个文件。使用Alternate,你可以输入:A
命令,在.c和.h文件之间快速切换。如果你在.c文件中,就会切换到.h文件,如果你在.h文件中,就会切换到.c文件。
要高效地处理多个文件,你需要使用几个不同的命令,如:ls
(列出缓冲区)、:b
(编辑缓冲区)、:bn
(下一个缓冲区)和:bp
(前一个缓冲区)。然而,通常情况下,在找到正确的文件之前,你的大部分时间都在键入:bn
、:bn
、:bn
。
Bufexplorer使得在vim中处理多个文件变得轻而易举。它添加了\be
键绑定(\
是前导键),它会打开一个所有缓冲区的列表,移动到显示文件名的行并按回车键,你就可以快速切换到另一个缓冲区。
许多vim命令继承自vi,它们的输出非常简陋。它们把输出打印到屏幕上,不能搜索或复制。如果你按空格太多次,内容就消失了。几乎不可能搜索这个文本,有时你甚至不知道如何让vim再次显示它。
Bufferize解决了这个问题。它接受一个vim命令并从其输出创建一个临时缓冲区,然后在一个分屏窗口中打开它。例如:Bufferize map
将在一个新窗口中显示所有键盘映射,你可以搜索它们。要退出新窗口,只需使用常规的:q
命令。
Bufferline补充了Bufexplorer(见上文),使它更容易处理多个文件/缓冲区。它在状态行中打印所有打开的文件及其缓冲区编号的列表。你只需要浏览一下这个列表,输入:b 5
就可以切换到第5个文件/缓冲区,或者使用Bufexporer,点击\be
后面跟/5
,然后回车。
如果你在一个分割中打开了两个缓冲区,并且你想要关闭一个缓冲区,那么你可以使用:bd
命令。不幸的是,这个命令也关闭了分割。通常,你不想关闭分割,而只想关闭缓冲区。在这种情况下,使用Buffkill的:BD
命令,该命令将关闭缓冲区,但保留分割。
Characterize添加了ga
快捷方式,显示光标下Unicode字符的名称、代码点值和十六进制值。
此扩展改进了用于查找下一个/前一个字符的f
和F
快捷键。按下fa
会转到下一个a
。按下Fa
会转到前一个a
。没有这个扩展,你必须再次输入fa
来找到下一个a
或者按下分号;
。类似地,你必须输入Fa
或,
才能再次找到前面的a
。如果你是一个vim老手,你已经在用;
和,
,你最终会fafafafa
或FaFaFaFa
。
有了这个扩展,你可以再按一次f
,它会搜索下一个字符,你可以再按一次F
,它会搜索前一个a
,所以,不用fafafafa
,你现在可以用fafaff
代替FaFaFaFa
,你可以FaFFF
。此外,当你按下f
或F
时,它将显示下一个/前一个匹配项,你立即就知道光标将跳转到哪。
深色系主题。灰色背景,浅绿色文字和功能。
深色系主题。黑色背景,浅绿色文字,浅黄色功能。
深色系主题。灰色背景,淡蓝色文字,淡黄色功能。
最简单、最快捷的注释插件之一。按gcc
将整个行注释掉。按gc
注释掉一个可视化选中部分。再次按下相同的快捷键取消注释。
这个插件有助于解决git合并冲突。假设你刚从github上的项目主分支中取出代码,遇到了一个合并冲突错误。要解决这个问题,可以运行这个插件提供的:Conflicted
命令。该命令创建一个三向diff,并将结果放在三个垂直分割的窗口中。左边的分割是上游更改,中间的分割是工作更改,右边的分割是本地更改。你可以接受上游diff或本地diff来解决冲突。为快速接受正确的diff, Conflicted提供了两个键映射。dgu
命令将使用上游diff,dgl
将使用本地diff。要解决下一个冲突,使用:GitNextConflict
命令。如果没有更多的冲突,vim将退出,你可以git commit
已解决冲突的文件。
这个插件添加了ctrl+p
绑定来打开一个模糊文件打开对话框。例如,如果你需要编辑math-config.json
文件,你可以键入文件名的一些字母,如mat.js
、mjson
,甚至thfig
(“th”是“math”的最后两个字母,“fig”是“config”的最后三个字母)。Ctrlp将立即缩小搜索范围,并提供最佳匹配。它还可以用来打开mru文件(最近使用的文件)和缓冲区,你可以使用ctrl+r
和ctrl+f
快捷键在文件/mru/缓冲区模式之间切换。
Ctrlp-funky通过添加函数查找模式扩展了上面的Ctrlp插件。你可以运行:CtrlPFunky
命令,立即在函数搜索模式下打开Ctrlp,或按下ctrl+p
打开Ctrlp,然后按ctrl+r
(或ctrl+f
)几次,进入函数搜索模式。例如,如果你有一个void debug_print()
函数,你可以输入vodepr
(单词void、debug、print的前两个字母),然后回车,vim将跳转到这个函数的定义。
有了这个插件,你可以快速搜索和替换大量的文本。当你运行:CtrlSF
模式命令时,它将在左侧创建一个包含所有匹配项的结果窗口。“结果”窗口中还有一些围绕匹配项的上下文行,方便你知道你正在查看的是否是正确的匹配项。现在,你可以直接在结果窗口中进行编辑。当你保存结果窗口时,更改也将保存在文件中。你也可以按下回车键,在右边的窗口中打开每个结果并在那里编辑它。
Delimitmate会自动关闭引号和括号。例如,你输入“会自动得到“”,而且光标位于两个引号之间。
这个插件为vimdiff添加了一个新的diff可视化方法,它试图最小化差异的数量。当你处于diff模式时,输入:EnhancedDiff patience
命令,你就能够更好地查看diff。
Dirvish支持惯用的缓冲区驱动开发,它作为一个文件浏览器补充了Nerdtree(见下文)。当你按下-
键时,当前缓冲区将变成一个文件浏览器。你将看到当前工作目录或当前打开的文件目录中的所有文件。然后可以使用箭头键hjkl和搜索操作符/
导航这个目录并查找文件。当你按下回车键时,Dirvish将退出,光标下的文件将在当前窗口中打开,作为一个新的缓冲区。当你有多个分割打开时,这个插件特别强大,因为你可以指定下一个文件在哪个分割中打开。你只需导航到分割,点击-
,找到文件,然后点击回车,就可以在希望的分割中打开它了。
Dsf是删除周围函数的缩写。通过在函数调用中按下dsf
,它将删除周围的函数名。例如,如果你有像print_r(get_post|s(true))
这样的代码,并且你的光标位于|字符所在的位置,那么当你按下dsf
时,你将获得输出get_posts(true)
。
有了这个扩展,你就可以整齐地将文本对其到列中。它添加了:EasyAlign
命令,你可以将其绑定到你想要绑定的任何键盘快捷键。当你执行它时,它会要求你输入列分隔符字符,然后对所选文本进行格式化。例如,要对齐代码使所有=
符号都在同一列中,你可以使用V
命令直观地选择行,然后运行:EasyAlign
,接着=
,然后回车。
Easymotion让你可以更快地在文件中导航。它添加了\\ w
快捷方式,允许你快速跳转到光标之后的任何单词。它为每个单词分配一个唯一的字母,当你下次按下它时,光标会立即跳转到该单词。它还添加了\\b
快捷方式,让你可以快速地向后导航。类似地,如果你需要跳转到上面或下面的任何一行,你可以使用\\k
和\\j
快捷键。
使用Exchange插件,你可以非常快速地交换两个单词。转到第一个单词并按cxw
,然后转到第二个单词并再次按cxw
。你就完成了这两个词位置的交换!
实际上,你不仅可以交换两个词,还可以交换任何两个motion。按下cx
后,下一个快捷键是motion(motion是移动光标的键盘快捷键)。例如,要交换两个字符,可以执行cxl
,然后再执行cxl
(l是将光标向右移动一个位置的动作)。类似地,要交换两个句子,你可以执行cxis
,然后对第二个句子也执行cxis
操作。在这种情况下,motion是选择整个句子。
同样,如果两个motion相同,只要按一下.
重复第一个操作。
通常,你希望选择比刚刚选择的文本多一点的文本。例如,你使用viw
选择了一个单词,但随后发现需要选择整个引用字符串。有了这个插件,你可以按+
,它会把当前的选择扩展到下一个最大的文本对象。从字符到一个单词、一个带引号的字符串、一行、一段到整个文件。
Far使查找和替换多个文件中的文本变得很容易。它添加了:Far pattern1 pattern2
命令。当你运行这个命令时,它将屏幕分成两半。在上半部分,它显示了pattern1
匹配的所有文件和行。在下半部分,可以预览匹配的上下文。在上面的分割中,你可以使用hjkl键来导航匹配项。默认情况下,所有匹配项都将用pattern2
替换,但你也可以使用t
键取消匹配项的标记(并再次使用t标记它们)。选择要替换的所有匹配项之后,运行:Fardo
命令。这个命令将执行实际的替换。
Far也很适合于查找所有匹配项。你可以使用:F pattern
命令,它将查找所有匹配的模式,并把它们显示在两个分割中,但是它不会执行替换。
使用Fugitive,你可以直接从vim使用git。它添加了:Git
命令(或简写为:G
),该命令运行git status
,并在一个分割窗口中显示结果。然后,可以使用键盘快捷键s
来暂存(git add)一个文件,使用u
来恢复(git reset)一个文件。暂存文件之后,可以按cc
创建提交。我还不知道如何进行git推送,所以这是我需要学习的内容。如果我能够在不离开vim的情况下进行代码推送和部署,那将非常方便。
Fzf是Ctrlp(见上文)的一个替代方案。它为快速打开文件和切换缓冲区添加了几个命令。这些命令是:Files
和:Buffers
。如果你以前是按多次tab键来补全文件名和缓冲区名,那么现在你只需要键入文件名或缓冲区名的几个字母。例如,如果你需要打开options.c
文件,你可以直接输入opt.c
,甚至是oc
,Fzf都会为你提供最佳匹配。
Fzf-mru增加了一个可以通过:FZFMru
命令访问的mru模式。此模式允许你快速访问最近编辑的文件。假设你昨天在从事scraper项目相关的工作。今天,当你进入mru模式时,只需要输入scra
,它就会显示你昨天处理的scraper项目的所有文件。
Gitgutter增加了两个有用的东西。第一个列位于vim最左边,它快速显示当前文件的git diff信息。你可以快速查看添加和更改了哪些行。第二个是]c
和[c
映射,让你可以在更改的行之间跳转。
我最近切换到Goyo模式编程。当你输入:Goyo
命令时,这个插件会将内容居中,并删除行号和状态行,这样你就可以专注于无干扰的编码了。如果还让vim全屏,那就更好了。
Grepper改进了vim中的查找,并增加了对ripgrep的支持。你可以输入:Grepper
,然后输入你的搜索查询,它将找到所有匹配项并在quickfix窗口中加载它们。然后你可以使用vim的:cn
和:cp
命令来导航到下一个/前一个匹配项,或者使用Unimpaired插件(见下文)的快捷方式]q
和[q
。
这个插件的作者建议将它与qfenter.vim插件一起使用。这是我还要尝试的东西。
Gv将git提交浏览器添加到vim中。你可以运行:GV
命令,它将显示整个提交树。然后,你可以在提交窗口中按下回车或o来查看各个差异。要退出diff查看器,请按q
。如果你只对当前文件的git日志感兴趣,那么可以使用:GV!
命令。
Illuminate高亮显示当前可见缓冲区中光标下这个单词的所有出现。例如,如果光标在单词var
上,那么所有其他的var
也将高亮显示。
这个插件允许你同时高亮显示多个单词。它添加了快捷方式\k
,可以更改光标下单词的背景颜色,以及文件中出现的所有相同单词。你还可以使用n
和N
来跳转到下一个/上一个高亮显示的单词。当你处理复杂的代码并需要跟踪多个变量的使用情况时,它非常有用。
Linediff让你可以快速比较两个文本块。可视地选择第一个文本块并运行:Linediff
命令。然后可视地选择第二个块并再次运行相同的命令。这个插件将创建一个新的标签页,将两个文本块的差异垂直分割。如果结果看起来太冗长,运行:EnhancedDiff patience
命令(来自上面的Diff-enhanced插件)来改进差异。
你还可以使用这个插件快速解决git合并冲突。如果你打开的文件中存在合并冲突,将光标放在合并冲突标记<<<<<<
和>>>>>
之间,并运行:LinediffMerge
命令。接下来,插件会自动创建一个垂直分割,分割合并冲突差异,你可以在左边或右边的分割中进行编辑,并通过运行:LinediffPick
命令来自动解决合并。
一旦你对vim的熟练达到了一定的程度,你将开始一直使用quickfix窗口(以及位置列表窗口)。查找结果将在quickfix中,linting错误将在quickfix中,编译错误将在quickfix中,待办事项列表将在quickfix中。一切都会很快解决。你会一直关闭和打开quickfix。不幸的是,没有简单的方法来切换quickfix窗口和位置列表窗口。你必须使用:copen
和:cclose
命令来打开/关闭quickfix,以及:lopen
和:lclose
来打开/关闭位置列表。这打字太多了。
Listtoggle使它更加简单,并增加了两个快捷方式来快速切换它们。\q
绑定将切换quickfix窗口,而\l
绑定将切换位置列表窗口。
通常,你需要查找当前文件中的所有出现。你不想来一次全局搜索,你不想搜索和替换,你不想要任何分割,你只想要一个所有结果的总览。Locate通过:Locate
命令(或简写为:L
)提供完全相同的功能。只需键入:L pattern
,这个插件就会打开一个快速位置列表,其中包含当前文件中所有出现该模式的地方。你可以使用快捷方式\l
切换位置列表(由Listtoggle插件提供,见上文),你还可以通过快捷方式]l
(下一个结果)和[l
(前一个结果)(由Unimpaired插件提供,见下文)来浏览结果。
这个插件突出显示了光标所在位置最内层的HTML打开和关闭标记。例如,如果光标在<div class="post">cursor here</div>
,那么这个插件将突出显示<div>
和</div>
标签。
Matchup添加了快捷方式%
,允许你在匹配的括号对之间快速跳转。如果你的光标在{字符上,那么按%后它将跳到}。如果你再次按%,它将跳回{
。它还添加了快捷方式z%
,使你可以向前跳转到下一对圆括号内。假设你有一个函数pri|nt_data("hi", 7)
和你的光标在|。然后,在按下z%
之后,光标将出现在函数参数中。
Nerdcommenter是另一个代码注释插件。借助Commentary (见上文),你可以使用gc
快捷方式快速切换注释,但是Nerdcommenter提供了对注释的更多控制。例如,你可以使用\cm
快捷方式执行多行注释,并使用\cA
快捷方式在行尾添加注释。
Nerdtree是一个文件管理器。它在vim的左侧显示当前项目的完整目录和文件树结构。要打开和关闭Nerdtree,请运行:NERDTreeToggle
命令。方便起见,你可以将它绑定到快捷方式\t
。当它打开时,你可以使用常规的hjkl键进行导航。使用键O
打开项目中的所有目录,然后使用常规的/
search操作符搜索文件。要在右侧打开光标下的文件,请按下ok键。要查看隐藏的文件,请使用I键。与Dirvish(见上文)相比,它支持文件管理器驱动的开发。Nerdtree总是在右侧打开文件,而不是指定在哪里打开文件。
这个插件将语法高亮显示添加到Nerdtree中。现在,文件和目录有了不同的颜色。
Vim有许多不同的寄存器。当你复制文本时,它会进入"
寄存器。当你删除文本时,它会进入数字寄存器。然后还有小写和大写等寄存器供你个人使用。
当你要使用寄存器时,这个插件会预览它们。当你按下"键时,它会在右侧打开一个寄存器备忘单,你可以看到每个寄存器的内容并选择正确的寄存器。你还可以按空格键加大寄存器备忘单。
Quickfix是vim最大的特性之一。不幸的是,一旦用结果填充了quickfix列表,它就会被冻结。你无法进一步过滤quickfix列表。这种行为不太合理,因为你总是希望细化结果。
Qfgrep允许你这样做。现在,你可以在quickfix窗口中过滤结果。使用\g
快捷方式过滤结果,\v
转换过滤结果,\r还原原始条目。它还添加了:QFGrepPat
命令,该命令执行与\g相同的操作,:QFGrepPatV
则执行与\v
相同的操作。
Qlist添加了:Ilist
函数,它是vim内置的:Ilist
函数的改进版本。内置的:ilis
t函数来自一个计算机没有多少内存的时代,所以它当时不是很有用,因为它会一股脑把所有东西都打印到屏幕上,你无法使用这样的结果(见上文的Bufferize插件)。改进后的:Ilist
函数从结果中创建一个quickfix列表。你现在可以运行:Ilist pattern
,这个插件将在当前以及包括的项目文件中找出所有用到的单词模式,并把它们放在quickfix窗口中,正是你想要显示所有结果的地方。
你不仅希望筛选quickfix结果(上面的Qfgrep),还希望编辑quickfix窗口,就好像它只是另一个缓冲区一样。这个插件使得quickfix窗口可以修改。现在可以使用dd
删除quickfix条目,使用i
添加新条目。你还可以直接编辑quickfix结果,当你通过:w保存quickfix窗口时,文件也会得到更新。
Ragtag为处理HTML标签添加了三个有用的键盘快捷键。第一个是ctrl+x/
关闭任何打开的标签。例如,如果光标在
标签中,那么你可以立即闭合它并得到
…
。第二个是ctrl+ xSPACE
,它根据刚刚输入的单词创建一个开始和结束标签。例如,如果你输入tag,然后立即按下这个快捷键,那么你将得到|,其中|是光标。第三种是ctrl+xENTER
,它的工作方式与前一种快捷方式相同,但在两个标签之间放了一个空行。
这个插件让你可以跳转到外部Ranger文件管理器,在vim中打开一个文件。它类似于Dirvish(见上文),让你可以轻松地进行缓冲区驱动的开发。当你在任何窗口中运行:Ranger
命令时,它将启动ranger
进程。然后,当你选择一个文件时,它将在选择的文件中作为一个新的缓冲区打开。
Repeat改进了.
命令。它让你可以重复其他插件的命令和动作。例如,如果你使用Surround插件(见下文)将文本括在引号中,那么按下.
会重复这个动作。
由于vim不是IDE,所以它几乎没有项目的概念,也不知道项目的根目录是什么。当你尝试打开一个文件时,vim会搜索主目录或其他目录,而不是项目目录。
这个插件会自动将vim的当前工作目录设置为项目目录,使得处理项目变得更加简单。它通过查找最根部的.git
目录来实现。通常,此类目录表明了项目的起点。
Vim的文档提到了一种称为scratch缓冲区的特殊缓冲区类型。这个插件实现了它。Scratch缓冲区是临时丢弃缓冲区。当你在做一个项目的时候,快速笔记是很有用的。使用:Scratch
命令打开它。光标将跳转到顶部的scratch窗口。当你将光标移动到另一个窗口时,scratch窗口将自动关闭。
当使用标记时,没有一种可视化的方式来告诉你在哪里添加了它们。你可能记得一两个标记,但当你再加的时候,你就迷失了。这个插件解决了这个问题,它会在最左边的列中显示标记。你可以用默认快捷方式ma
、mb
、…添加和切换标记,用dma
、dmb
、…删除单个标记,用m-
删除所有标记,用]'
和['
跳到下一个和前一个标记,用m/
将所有标记放到位置列表窗口中。
在正常模式下,ctrl+a
和ctrl+x
可以实现数值递增和递减。这个插件使这些键盘快捷键也可以实现日期和时钟时间的增加。例如,如果光标位于字符串2000-01-31
上时,按ctrl+a
将使其变为2000-02-01
,按ctrl+z
将使其变为2000-01-30
。
Splitjoin让你可以将代码片段从单行语句切换到多行语句,反之亦然。假设你有一个单行HTML代码片段
hi
,然后按gS
(分割),它将转换成一个多行HTML代码片段
\n hi \n
。如果你在这个多行代码段上按下gJ
(合并),它将再次变为一个单行代码段。
借助Surround,你可以快速删除、更改和添加文本周围的匹配符号对。假设你有一个字符串"hello world"
。按下ds"
,引号将被删除,字符串将变成hello world
。按下c"‘键,双引号会变成单引号,字符串会变成’hello world’。你还可以按下cs"
,这将把引号改为
HTML标签
,字符串将变成
hello world
。如果你有一个普通的字符串hello world,那么要将它括在引号中,请使用v选择它,然后按S并输入包围符号。如果你有一个单词hello
,你想把它用单引号括起来,按ysiw'
。
Swap让你可以快速地交换单词或逗号分隔的函数参数。例如,如果你有一个函数print(a, b, c),那么你可以按g>,它会变成print(b, a, c)
。按g<
,它会再次变成print(a, b, c)
。你还可以通过按gs
进入可视化交换模式。然后使用hjkl键来交换参数。
CSS3语法高亮插件。
Dockerfile语法高亮插件。
HTML5语法高亮插件。
i3窗口管理器配置文件语法高亮插件。
JavaScript语法高亮插件。
JSON语法高亮插件。
Nginx配置文件语法高亮插件。
PHP语法高亮插件。
tmux配置文件语法高亮插件。
Vim终端没有用于从系统剪贴板复制和粘贴的寄存器*
或+
。这个插件添加了cp
快捷方式,通过调用外部实用程序xsel
将所选文本或motion复制到系统剪贴板。它还具有从系统剪贴板粘贴的快捷方式cv
。
Tabular的功能与EasyAlign(见上文)相同。它对文本进行列对齐。与EasyAlign相比,它的一个优点是,你可以直接将用于对齐的正则表达式传给它。与正则表达式相匹配的位置将会对齐。例如:Tabular /regex
将创建整齐的regex
列。
这个插件可以很容易地重命名HTML的开闭标签对。你只需要重命名其中一个,这个插件会自动重命名另一个。例如,如果你有
…
,你把开标签
重命名为
,那么闭标签会自动重命名为
,你将得到输出
…
。
掌握vim的一个步骤是学习使用文本对象。文本对象允许你操作整个文本结构,而不是单个字符。Vim已经附带了许多文本对象——你可以访问单词、句子、段落和代码块。这个插件增加了十几个文本对象。例如,你可以使用di
删除逗号分隔的项,或者你可以使用cin
和cil
来更改前一个和后一个逗号分隔的项,你可以使用ci+
来更改sum元素,等等。
从头编写自己的文本对象非常困难,因为在调用文本对象时必须精确复制vim的行为,并了解所有的陷阱和缺陷。这个插件提供了一个快速简单的接口,让你可以实现自己的文本对象。“textobj”插件有一个完整的生态系统,使用这个插件可以添加各种有用的文本对象。
这个插件使用Textobj-user(见上文)创建一个文本对象ie和ae来操作整个文件。例如,要选择整个文件,你可以执行vae,要删除整个文件,你可以执行vaed或dae。
这个插件让你可以直观地移动选中的文本。例如,你能可视化地选择一个单词,然后使用快捷键ctrl+h和ctrl+l将其向左或向右移动。类似地,你可以使用快捷键ctrl+j和ctrl+k向下移动整个行。
有了这个插件,你可以访问Libreoffice同义词典。一旦配置了它,你可以使用:Thesaurus word
命令来查找与word相关的所有单词,你还可以使用:ThesaurusW
来查找与光标下的单词相关的所有单词。
当你处于流程中时,会同时发生许多事情,并且会打开许多tmux窗口和窗格。一个显示git日志,另一个用于测试,还有一个显示帮助手册,等等。通常,你需要从tmux窗格获取信息到vim。通常,你必须用鼠标来复制它,但这非常低效。有了这个插件,你可以在插入模式下按下ctrl+x ctrl+u,从任何tmux窗口/窗格补全单词。它将提供来自所有tmux窗口/窗格的所有单词的列表。
当用:s/old/new
命令替换文本时,执行这个命令后才能看到更改。这个插件让你可以在输入时预览old匹配和用于替换的部分new,你可以直接看到你是否做对了。
Ultisnips是一个代码片段引擎。当你按下tab键时,它会检查最后键入的Token并将其扩展为代码段。为了让它发挥作用,你需要创建一个language.snippets
文件,并在其中写入代码片段。例如,你可以创建php.snippets,加入一个if代码段if ($1) { $0 }。现在,当你在编写PHP代码键入if并按下tab键时,它将扩展为if(|){},你的光标将位于|字符所在的位置。如果再次按下tab,它将跳转到if () { | }花括号之间的$0 Token。
通常,你可能因为操作太快关闭了一个你不想关闭的窗口。有了这个插件,你现在可以按ctrl+w+u
撤消关闭操作。
这个插件让你可以快速搜索和插入Unicode字符。例如,如果你想插入一个Unicode兔子符号,你可以输入rabbit,然后按下ctrl+x ctrl+z。输入文字rabbit将被“兔子”的表情符号取代。
许多命令都是成对的。例如:bn
和:bp
跳到下一个/前一个缓冲区,:cn
和:cp
跳到下一个/前一个quickfix列表项,:ln
和:lp
跳到下一个/前一个位置列表项,等等。此插件为这些命令添加了灵活的快捷方式。你现在可以用]b
和[b
跳到下一个/
前一个缓冲区,用]q
和[q
跳到下一个/前一个quickfix条目,用]l
和[l
跳到下一个/前一个位置列表条目,等等。
当你使用多个分割窗口时,在短暂的分心之后,很容易忘记你在哪个分割窗口中工作。这个插件会淡化其他所有的分割线,使当前聚焦窗口的分割线清晰可见。
通常,你需要将注释、函数定义或代码片段在上方折叠,使其始终可见。通常的方法是用ctrl+w+s
分割窗口,然后用10ctrl+w+-
重新调整窗口大小。这个插件合并了这两个动作。现在你可以直观地选择该区域并按下ctrl+w+gss
。该插件将分割窗口并调整大小,使其与所选的行完全匹配。
有两个操作符可以搜索光标下的单词。它们是*
(向前搜索)和#
(向后搜索)。不幸的是,在可视化模式中,它们不会搜索可视化选择部分,你也不能搜索包含特殊字符的单词。例如,如果单词是h#e#l#l#o,那么这些操作符将选择并搜索这个单词中的一个字母,这不是你想要的。
使用此插件,你可以搜索可视化选择的序列,它可以包含任何特殊字符。使用v
命令进行选择,然后按*
或#
进行搜索。
Writeable-search类似于CtrlSF(见上文)。它让你可以快速查找结果并立即在结果窗口中编辑它们。当你运行:WritableSearch pattern
命令时,它将在当前目录中的所有文件中搜索这个pattern,并打开一个包含结果的新选项卡。然后,你可以编辑结果,当你在相同的结果窗口中执行:w
操作时,它会更改更新文件。如果你已经在quickfix窗口中有一个要修复内容的列表,那么你可以通过:WritableSearchFromQuickfix
命令将它们转移到这个插件中进行编辑。
领取专属 10元无门槛券
私享最新 技术干货