当前位置: 首页 > 科技观察

5个对开发者有用的Vim插件

时间:2023-03-15 08:27:17 科技观察

使用这5个插件来扩展Vim功能以提高你的编码效率。我使用Vim已有20多年,两年前我决定将它作为我的主要文本编辑器。我使用Vim来编写代码、配置文件、博客文章以及其他任何可以用纯文本表达的东西。Vim有很多很棒的特性,一旦你习惯了它,你就会非常有效率。在日常的编辑工作中,我更喜欢使用Vim稳定的原生功能,但是开源社区为Vim开发了大量的插件,可以扩展Vim的功能,改善你的工作流程,提高工作效率。这里有5个非常有用的插件,可用于编写任何编程语言。1.AutoPairsAutoPairs插件可以帮助您插入和删除成对的文本,例如大括号、圆括号或引号。这在编写代码时非常有用,因为许多编程语言都有成对标记的语法,例如函数调用的括号或字符串定义的引号。AutoPairs最基本的功能就是当你输入一个开括号时,它会自动完成对应的另一半括号。例如,如果你输入一个[,它会自动为你填充另一半]。相反,如果您用退格键删除括号的前半部分,自动配对将删除另一半。如果你设置了自动缩进,AutoPairs会在你按下回车键的时候在正确的缩进位置补全括号的另一半,这比找个地方放另一半然后选一个正确的括号上去要省事多了.例如,以下代码:packagemainimport"fmt"funcmain(){x:=trueitems:=[]string{"tv","pc","tablet"}ifx{for_,i:=rangeitems}}在items后输入左花括号并按Enter将产生以下结果:packagemainimport"fmt"funcmain(){x:=trueitems:=[]string{"tv","pc","tablet"}ifx{for_,i:=rangeitems{|(光标在这里)}}}AutoPairs提供了大量其他选项(您可以在GitHub上找到它们),但基础知识已经可以节省大量时间。2.NERDCommenterNERDCommenter插件为Vim增加了代码注释功能,类似于IDE集成开发环境中的注释功能。使用此插件,您可以一键注释单行或多行代码。NERDCommenter与标准的Vim文件类型插件一起工作,因此它了解一些编程语言并使用适当的方法来注释代码。最简单的入门方法是通过按Leader+Space组合键切换当前行的注释。Vim的默认主键是\。在可视模式下,您可以选择多行一起注释。NERDCommenter还可以按计数进行评论,因此您可以添加n来评论n行。还有一个很有用的功能“性感评论”,可以用Leader+cs触发,它有更漂亮的块评论风格。例如,以下代码:packagemainimport"fmt"funcmain(){x:=trueitems:=[]string{"tv","pc","tablet"}ifx{for_,i:=rangeitems{fmt.Println(i)}}}选中main函数中的所有行,按Leader+cs,会出现如下注释效果:packagemainimport"fmt"funcmain(){/**x:=true*items:=[]string{"tv","pc","tablet"}**ifx{*for_,i:=rangeitems{*fmt.Println(i)*}*}*/}因为这些行在块中被注释,您可以使用Leader+Space组合键一次删除此处的所有注释。NERDCommenter是任何使用Vim编写代码的开发人员必备的插件。3.VIMSurroundVimSurround插件可以帮助您“环绕”现有文本以插入成对的符号(如括号或双引号)或标签(如HTML或XML标签)。它类似于自动配对,但用于处理现有文本,在编辑文本时更有用。例如,您有以下句子:“Vim插件很棒!”当你的光标在被引用的句子中的任何地方时,你可以使用ds"组合键删除句子两端的双引号。Vim插件很棒!您还可以使用cs"'将双引号替换为单引号:'Vimpluginsareawesome!'或者用cs'[把它换成方括号:[Vimpluginsareawesome!]它有助于编辑HTML或XML文本中的标签,特别是行。假设你有下面这行HTML代码:

Vimpluginsareawesome!

当光标在单词“awesome”上的任何地方时,你可以按ysiw只需添加一个强调标记()到它:

Vimpluginsareawesome!

注意巧妙的
结束标签。VimSurround你也可以使用ySS来缩进文本和添加标签。例如,如果你有以下文本:

Vimpluginsare太棒了!

可以使用ySS在div标签上添加,注意生成的段落会自动缩进。

Vim插件很棒!

VimSurround还有很多其他选项,你可以参考GitHub上的说明尝试。4.VimGitgutterVimGitgutter插件非常有用对于使用Git作为版本控制工具的人。它会显示差异Vim行号列旁边的gitdiff标记。假设您提交了以下代码:1packagemain23import"fmt"45funcmain(){6x:=true7items:=[]string{"tv","pc","tablet"}89ifx{10for_,i:=rangeitems{11fmt.Println(i)12}13}14}当你做一些改变时,VimGitgutter会显示如下标记:1packagemain23import"fmt"4_5funcmain(){6items:=[]string{"tv","pc","tablet"}7~8iflen(items)>0{9for_,i:=rangeitems{10fmt.Println(i)+11fmt.Println("------")12}13}14}_标记表示在第5行和第6行之间删除了一行。~表示修改了第8行,并且+表示添加了第11行。此外,VimGitgutter允许您使用[c和]c在多个修改块之间跳转,甚至可以使用Leader+hs来暂存变更集。这个插件提供有关更改的即时视觉反馈,如果您使用Git,拥有它是一个巨大的优势。5.VIMFugitiveVimFugitive是另一个很棒的插件,它将Git工作流程集成到Vim中。它封装了Git,让你可以直接在Vim中执行Git命令,并将结果集成到Vim界面中。这个插件有很多功能,更多信息在它的GitHub项目页面上。下面是一个使用VimFugitive的基本Git工作流程示例。假设我们修改了如下Go代码,可以使用:Gblame调用gitblame查看每一行的commit信息***:e9949066(RicardoGerardi2018-12-0518:17:19-0500)│1包maine9949066(RicardoGerardi2018-12-0518:17:19-0500)│2e9949066(RicardoGerardi2018-12-0518:17:19-0500)│3导入“fmt”e9949066(RicardoGerardi2018-10518:17:19-0500)│4e9949066(RicardoGerardi2018-12-0518:17:19-0500)│_5funcmain(){e9949066(RicardoGerardi2018-12-0518:17:19-0500)│6项:=[]string{"tv","pc","tablet"}e9949066(RicardoGerardi2018-12-0518:17:19-0500)│700000000(尚未提交2018-12-0518:55:00-0500)│~8iflen(items)>0{e9949066(RicardoGerardi2018-12-0518:17:19-0500)│9for_,i:=rangeitems{e9949066(RicardoGerardi2018-12-0518:17:19-0500)│10fmt.Println(i)00000000(尚未提交2018-12-0518:55:00-0500)│+11fmt.Println("------")e9949066(里卡多·杰拉尔迪2018-12-0518:17:19-0500)│12}e9949066(里卡多·杰拉尔迪2018-12-0518:17:19-0500)│13}e9949066(里卡多·杰拉尔迪2018-12-0518:17:19-0500)│14}可以看到第8行和第11行显示还没有提交使用:Gstatus命令检查存储库的当前状态:1#在分支master上2#你的分支是最新的'origin/master'。3#4#未暂存提交的更改:5#(使用“gitadd...”更新将要提交的内容)6#(使用“gitcheckout--...”丢弃更改在工作目录中)7#8#modified:vim-5plugins/examples/test1.go9#10没有添加到提交的更改(使用“gitadd”和/或“gitcommit-a”)--------------------------------------------------------------------------------------------------1包主要23import"fmt"4_5funcmain(){6items:=[]string{"tv","pc","tablet"}7~8iflen(items)>0{9for_,i:=rangeitems{10fmt.Println(i)+11fmt.Println("------")12}13}14}VimFugitive在分割窗口中显示gitstatus的输出。可以在这一行按-键,以文件名暂存这个文件的提交,再按-取消暂存。此信息将在您操作时自动更新:1#在分支master上2#您的分支是最新的'origin/master'。3#4#要提交的更改:5#(使用“gitresetHEAD...”取消暂存)6#7#修改:vim-5plugins/examples/test1.go8#------------------------------------------------------------------------------------------------------1包main23import"fmt"4_5funcmain(){6items:=[]string{"tv","pc","tablet"}7~8iflen(items)>0{9for_,i:=rangeitems{10fmt.Println(i)+11fmt.Println("------")12}13}14}现在您可以使用:Gcommit提交更改。VimFugitive将打开另一个拆分窗口供您输入提交信息:1vim-5plugins:Updatedtest1.goexamplefile2#Pleaseenterthecommitmessageforyourchanges.以'#'开头的3#行将被忽略,并且一条空消息将中止提交。4#5#在分支master6#你的分支是最新的'origin/master'。7#8#Changestobecommitted:9#modified:vim-5plugins/examples/test1.go10#Press:wq保存文件并完成提交:[masterc3bf80f]vim-5plugins:更新了test1.goexamplefile1文件已更改,2次插入(+),2次删除(-)按ENTER或键入命令继续,然后您可以再次使用:Gstatus检查结果并使用:Gpush将新提交推送到远程。1#在分支master上2#你的分支比'origin/master'领先1个提交。3#(使用“gitpush”来发布你的本地提交)4#5没有什么可提交的,工作树cleanVimFugitive的GitHub项目主页有很多截屏视频展示了更多的功能和工作流程,所以如果你喜欢它并想了解更多,去看看吧。下一个?这些Vim插件是程序开发者的神器!开发人员通常使用另外两种类型的插件:自动完成插件和语法检查插件。大部分都是和具体的编程语言相关的,以后会在一些文章中介绍。你在写代码的时候用过一些其他的Vim插件吗?欢迎在评论区留言分享。