游戏攻略网
当前位置: 首页 游戏攻略

使用vim编辑器心得体会(个好用的开发者)

时间:2023-06-11 作者: 小编 阅读量: 1 栏目名: 游戏攻略

通过这5个插件扩展Vim功能来提升你的编码效率。NERDCommenter可以与标准的Vimfiletype插件配合,所以它能理解一些编程语言并使用合适的方式来注释代码。最易上手的方法是按LeaderSpace组合键来切换注释当前行。VimSurround也可以用ySS缩进文本并加上标签。它会在Vim的行号列旁显示gitdiff的差异标记。~表示第8行有修改,表示新增了第11行。

通过这 5 个插件扩展 Vim 功能来提升你的编码效率。

-- Ricardo Gerardi

我用 Vim 已经超过 20 年了,两年前我决定把它作为我的首要文本编辑器。我用 Vim 来编写代码、配置文件、博客文章及其它任意可以用纯文本表达的东西。Vim 有很多超级棒的功能,一旦你适合了它,你的工作会变得非常高效。

在日常编辑工作中,我更倾向于使用 Vim 稳定的原生功能,但开源社区对 Vim 开发了大量的插件,可以扩展 Vim 的功能、改进你的工作流程和提升工作效率。

以下列举 5 个非常好用的可以用于编写任意编程语言的插件。

1、Auto Pairs

Auto Pairs 插件可以帮助你插入和删除成对的文字,如花括号、圆括号或引号。这在编写代码时非常有用,因为很多编程语言都有成对标记的语法,就像圆括号用于函数调用,或引号用于字符串定义。

Auto Pairs 最基本的功能是在你输入一个左括号时会自动补全对应的另一半括号。比如,你输入了一个 [,它会自动帮你补充另一半 ]。相反,如果你用退格键删除开头的一半括号,Auto Pairs 会删除另一半。

如果你设置了自动缩进,当你按下回车键时 Auto Pairs 会在恰当的缩进位置补全另一半括号,这比你找到放置另一半的位置并选择一个正确的括号要省劲多了。

例如下面这段代码:

package main

import "fmt"

func main() {

x := true

items := []string{"tv", "pc", "tablet"}

if x {

for _, i := range items

}

}

在 items 后面输入一个左花括号按下回车会产生下面的结果:

package main

import "fmt"

func main() {

x := true

items := []string{"tv", "pc", "tablet"}

if x {

for _, i := range items {

| (cursor here)

}

}

}

Auto Pairs 提供了大量其它选项(你可以在 GitHub 上找到),但最基本的功能已经很让人省时间了。

2、NERD Commenter

NERD Commenter 插件给 Vim 增加了代码注释的功能,类似在 IDE(integrated development environment) 中注释功能。有了这个插件,你可以一键注释单行或多行代码。

NERD Commenter 可以与标准的 Vim filetype 插件配合,所以它能理解一些编程语言并使用合适的方式来注释代码。

最易上手的方法是按 Leader Space 组合键来切换注释当前行。Vim 默认的 Leader 键是 \。

在 可视化模式(Visual mode)中,你可以选择多行一并注释。NERD Commenter 也可以按计数注释,所以你可以加个数量 n 来注释 n 行。

还有个有用的特性 “Sexy Comment” 可以用 Leader cs 来触发,它的块注释风格更漂亮一些。例如下面这段代码:

package main

import "fmt"

func main() {

x := true

items := []string{"tv", "pc", "tablet"}

if x {

for _, i := range items {

fmt.Println(i)

}

}

}

选择 main 函数中的所有行然后按下 Leader cs 会出来以下注释效果:

package main

import "fmt"

func main() {

/*

* x := true

* items := []string{"tv", "pc", "tablet"}

*

* if x {

* for _, i := range items {

* fmt.Println(i)

* }

* }

*/

}

因为这些行都是在一个块中注释的,你可以用 Leader Space 组合键一次去掉这里所有的注释。

NERD Commenter 是任何使用 Vim 写代码的开发者都必装的插件。

3、VIM Surround

Vim Surround 插件可以帮你“环绕”现有文本插入成对的符号(如括号或双引号)或标签(如 HTML 或 XML 标签)。它和 Auto Pairs 有点儿类似,但是用于处理已有文本,在编辑文本时更有用。

比如你有以下一个句子:

"Vim plugins are awesome !"

当你的光标处于引起来的句中任何位置时,你可以用 ds" 组合键删除句子两端的双引号。

Vim plugins are awesome !

你也可以用 cs"' 把双端的双引号换成单引号:

'Vim plugins are awesome !'

或者再用 cs'[ 替换成中括号:

[ Vim plugins are awesome ! ]

它对编辑 HTML 或 XML 文本中的 标签(tag)尤其在行。假如你有以下一行 HTML 代码:

<p>Vim plugins are awesome !</p>

当光标在 “awesome” 这个单词的任何位置时,你可以按 ysiw<em> 直接给它加上着重标签(<em>):

<p>Vim plugins are <em>awesome</em> !</p>

注意它聪明地加上了 </em> 闭合标签。

Vim Surround 也可以用 ySS 缩进文本并加上标签。比如你有以下文本:

<p>Vim plugins are <em>awesome</em> !</p>

你可以用 ySS<div > 加上 div 标签,注意生成的段落是自动缩进的。

<div >

<p>Vim plugins are <em>awesome</em> !</p>

</div>

Vim Surround 有很多其它选项,你可以参照 GitHub 上的说明尝试它们。

4、Vim Gitgutter

Vim Gitgutter 插件对使用 Git 作为版本控制工具的人来说非常有用。它会在 Vim 的行号列旁显示 git diff 的差异标记。假设你有如下已提交过的代码:

1 package main

2

3 import "fmt"

4

5 func main() {

6 x := true

7 items := []string{"tv", "pc", "tablet"}

8

9 if x {

10 for _, i := range items {

11 fmt.Println(i)

12 }

13 }

14 }

当你做出一些修改后,Vim Gitgutter 会显示如下标记:

1 package main

2

3 import "fmt"

4

_ 5 func main() {

6 items := []string{"tv", "pc", "tablet"}

7

~ 8 if len(items) > 0 {

9 for _, i := range items {

10 fmt.Println(i)

11 fmt.Println("------")

12 }

13 }

14 }

_ 标记表示在第 5 行和第 6 行之间删除了一行。~ 表示第 8 行有修改,表示新增了第 11 行。

另外,Vim Gitgutter 允许你用 [c 和 ]c 在多个有修改的块之间跳转,甚至可以用 Leader hs 来暂存某个变更集。

这个插件提供了对变更的即时视觉反馈,如果你用 Git 的话,有了它简直是如虎添翼。

5、VIM Fugitive

Vim Fugitive 是另一个将 Git 工作流集成到 Vim 中的超棒插件。它对 Git 做了一些封装,可以让你在 Vim 里直接执行 Git 命令并将结果集成在 Vim 界面里。这个插件有超多的特性,更多信息请访问它的 GitHub 项目页面。

这里有一个使用 Vim Fugitive 的基础 Git 工作流示例。设想我们已经对下面的 Go 代码做出修改,你可以用 :Gblame 调用 git blame 来查看每行最后的提交信息:

e9949066 (Ricardo Gerardi 2018-12-05 18:17:19 -0500)│ 1 package main

e9949066 (Ricardo Gerardi 2018-12-05 18:17:19 -0500)│ 2

e9949066 (Ricardo Gerardi 2018-12-05 18:17:19 -0500)│ 3 import "fmt"

e9949066 (Ricardo Gerardi 2018-12-05 18:17:19 -0500)│ 4

e9949066 (Ricardo Gerardi 2018-12-05 18:17:19 -0500)│_ 5 func main() {

e9949066 (Ricardo Gerardi 2018-12-05 18:17:19 -0500)│ 6 items := []string{"tv", "pc", "tablet"}

e9949066 (Ricardo Gerardi 2018-12-05 18:17:19 -0500)│ 7

00000000 (Not Committed Yet 2018-12-05 18:55:00 -0500)│~ 8 if len(items) > 0 {

e9949066 (Ricardo Gerardi 2018-12-05 18:17:19 -0500)│ 9 for _, i := range items {

e9949066 (Ricardo Gerardi 2018-12-05 18:17:19 -0500)│ 10 fmt.Println(i)

00000000 (Not Committed Yet 2018-12-05 18:55:00 -0500)│11 fmt.Println("------")

e9949066 (Ricardo Gerardi 2018-12-05 18:17:19 -0500)│ 12 }

e9949066 (Ricardo Gerardi 2018-12-05 18:17:19 -0500)│ 13 }

e9949066 (Ricardo Gerardi 2018-12-05 18:17:19 -0500)│ 14 }

可以看到第 8 行和第 11 行显示还未提交。用 :Gstatus 命令检查仓库当前的状态:

1 # On branch master

2 # Your branch is up to date with 'origin/master'.

3 #

4 # Changes not staged for commit:

5 # (use "git add <file>..." to update what will be committed)

6 # (use "git checkout -- <file>..." to discard changes in working directory)

7 #

8 # modified: vim-5plugins/examples/test1.go

9 #

10 no changes added to commit (use "git add" and/or "git commit -a")

--------------------------------------------------------------------------------------------------------

1 package main

2

3 import "fmt"

4

_ 5 func main() {

6 items := []string{"tv", "pc", "tablet"}

7

~ 8 if len(items) > 0 {

9 for _, i := range items {

10 fmt.Println(i)

11 fmt.Println("------")

12 }

13 }

14 }

Vim Fugitive 在分割的窗口里显示 git status 的输出结果。你可以在该行按下 - 键用该文件的名字暂存这个文件的提交,再按一次 - 可以取消暂存。这个信息会随着你的操作自动更新:

1 # On branch master

2 # Your branch is up to date with 'origin/master'.

3 #

4 # Changes to be committed:

5 # (use "git reset HEAD <file>..." to unstage)

6 #

7 # modified: vim-5plugins/examples/test1.go

8 #

--------------------------------------------------------------------------------------------------------

1 package main

2

3 import "fmt"

4

_ 5 func main() {

6 items := []string{"tv", "pc", "tablet"}

7

~ 8 if len(items) > 0 {

9 for _, i := range items {

10 fmt.Println(i)

11 fmt.Println("------")

12 }

13 }

14 }

现在你可以用 :Gcommit 来提交修改了。Vim Fugitive 会打开另一个分割窗口让你输入提交信息:

1 vim-5plugins: Updated test1.go example file

2 # Please enter the commit message for your changes. Lines starting

3 # with '#' will be ignored, and an empty message aborts the commit.

4 #

5 # On branch master

6 # Your branch is up to date with 'origin/master'.

7 #

8 # Changes to be committed:

9 # modified: vim-5plugins/examples/test1.go

10 #

按 :wq 保存文件完成提交:

[master c3bf80f] vim-5plugins: Updated test1.go example file

1 file changed, 2 insertions( ), 2 deletions(-)

Press ENTER or type command to continue

然后你可以再用 :Gstatus 检查结果并用 :Gpush 把新的提交推送到远程。

1 # On branch master

2 # Your branch is ahead of 'origin/master' by 1 commit.

3 # (use "git push" to publish your local commits)

4 #

5 nothing to commit, working tree clean

Vim Fugitive 的 GitHub 项目主页有很多屏幕录像展示了它的更多功能和工作流,如果你喜欢它并想多学一些,快去看看吧。

接下来?

这些 Vim 插件都是程序开发者的神器!还有另外两类开发者常用的插件:自动完成插件和语法检查插件。它些大都是和具体的编程语言相关的,以后我会在一些文章中介绍它们。

你在写代码时是否用到一些其它 Vim 插件?请在评论区留言分享。


via: https://opensource.com/article/19/1/vim-plugins-developers

作者: Ricardo Gerardi 选题: lujun9972 译者: pityonline 校对: wxy

本文由 LCTT 原创编译, Linux中国 荣誉推出

点击“了解更多”可访问文内链接,
    推荐阅读
  • steam棋牌游戏推荐(幸运之夜新版本亮相TGC)

    steam棋牌游戏推荐12月1日,2017腾讯游戏嘉年华正式在成都开幕,腾讯的VR社交游戏《幸运之夜》在现场发布了最新版本。VR《幸运之夜》在TGC2017上惊艳亮相《幸运之夜》新版本发布邀请好友一起游戏今年7月底,《幸运之夜》正式在Steam发布,并推出了首款游戏作品“德州扑克”。今年的TGC2017现场,《幸运之夜》全新版本便带来了对互动性方面的提升。

  • 儿童睡前故事卖火柴的小女孩大全(卖火柴的小女孩)

    在长发公主的故事里,兔子小姐变成了手持宝剑的骑士,穿过了山川和河流,战胜了地狱恶犬,最终救出了长着一头金黄色长发的熊猫先生。随着一阵空间的波动,熊猫先生和兔子小姐来到了冰天雪地的圣诞节。小女孩被这突如其来的变化惊呆了。熊猫先生没有回答,轻轻摸了摸小女孩的头。小女孩点燃了第二根火柴。熊猫先生和兔子小姐则来到壁炉前,商量起小女孩最后一个愿望。熊猫先生蹲下来,握起小女孩的手。

  • 怎样做ppr管快一点(PPR管安装方法及技巧)

    怎样做ppr管快一点PPR管安装方法及技巧首先准备好需要的材料:热熔机,小剪刀,ppr管,管件,手巾。一定要根据自己热熔ppr管的口径,准备相应的热熔头。清洁:清洁管材与管件的焊接段部位,建议用95%浓度酒精擦净。在熔接时间内迅速的将管材无旋转的垂直插入管件中,并维持5秒以上,然后按相应冷却时间冷却。热熔后做到横平竖直,美观大方。

  • 大托特包搭配技巧(大托特包搭配技巧简述)

    西装外套+托特包复古时尚的格子,由黑白交错的条纹形成,文艺而又端庄搭配撞色托特包,优雅而不失俏皮,让气场变得灵动起来内搭白色连帽卫衣,减龄又可爱,接下来我们就来聊聊关于大托特包搭配技巧?大托特包搭配技巧西装外套+托特包复古时尚的格子,由黑白交错的条纹形成,文艺而又端庄。衬衫+托特包白色的衬衫休闲慵懒,给人一种空灵的感觉以及干净纯粹的气质。

  • 刘涛电视剧口碑(电视剧景气指数第一)

    还记得3月份刘涛在和周渝民主演的《大宋宫词》中扮嫩出演少妇被很多观众吐槽。万万没想到时隔数月,刘涛带着她的新剧《星辰大海》杀回来了。目前主要的剧情线在刘涛饰演的女主简爱身上。因为小时候意外发现母亲出轨的事,得知真相的父亲激愤之下杀死母亲并自杀,简爱因此成为了一个孤女。逃出傻子家的简爱在与姑姑的争执中误伤姑姑,从此开启逃命生涯。简爱从面馆辞职走投无路,误打误撞进入大公司之后面临着同事的故意刁难。

  • 外墙装修材料有哪些 外墙装修材料有哪些类型

    外墙涂料具有装饰性良好、耐污染耐老化以及施工维修容易和价格合理的特点。一般来说釉面外墙砖有亚光面与无光面两大类。它的装饰的效果也不错,有柚木色、深灰色等等可供选择。由于它的表面的肌理很清晰,所以色泽漂亮且装饰性极强。本站,中国知名大型装修平台,装修领导品牌。

  • 世界上有哪些花(世界上有哪些花 名字)

    瓜叶菊、香豌豆、夏兰、石竹、石蒜、荷花、翠菊、睡莲、福禄考、晚香玉、万寿菊、千日红、建兰、铃兰、报岁兰、香堇、大岩桐、水仙、小草兰、瓜叶菊、蒲包花、免子花、入腊红、三色堇、百日草、鸡冠花、一串红。孔雀草、大波斯菊、金盏菊、非洲凤仙花、菊花、非洲菊、观赏凤梨类、射干、非洲紫罗兰、天堂鸟、炮竹红、菊花、康乃馨、红掌、满天星、星辰花、三角梅、虞美人。

  • 长歌行李长歌母亲是谁杀的(长歌行李长歌的简介)

    下面更多详细答案一起来看看吧!长歌行李长歌母亲是谁杀的《长歌行》李长歌母亲是自杀的。李长歌,太子李建成之女,生母则是回纥王族。父母手足均死于玄武门之变,满怀愤恨的长歌凭高超武艺逃出皇宫,并在追捕过程中制造“坠崖假死”而逃生,其后女扮男装隐瞒身份流落民间,一心只想为父母复仇,在家和国的利害冲突中,最后放弃复仇,和阿诗勒隼一起成为了民族和解的使者。

  • 什么时候喝蛋白粉增肌效果最好(什么时候喝蛋白粉增肌效果最好)

    从长远来看,这种方法被证明可以促使肌肉明显增长。如果摄入量超过一定的阈值,蛋白质的合成就会受限。如果是以乳清饮料的形式摄入乳清蛋白,运动者可以在运动结束后立即饮用。按每公斤体重1克的标准,在健身前后立即摄入以及在运动后1小时内摄入可快速吸收的碳水化合物,可以明显抑制肌肉分解,并大大促进肌肉快速和明显的增长。在这种情况下,大量分泌的胰岛素促进了氨基酸向工作中的肌肉运输,为蛋白质合成奠定基础。

  • 窦骁周冬雨山楂树之恋结局(周冬雨18岁第一次出演)

    周冬雨18岁第一次出演要说最近最火的电影,非《少年的你》莫属,上映14天,已经收获了12.45亿的票房成绩,成为现阶段最强的票房黑马而作为该片主演的周冬雨和易烊千玺,也凭借在该片中的精彩演出,演技得到大众的进一步认可作为“。