编辑器战争: 我常用的neovim的几个插件

上一期做了一期vim之后,有好心人留言说,新手不要用vim什么的,就害怕入了vim的坑,从此远离了编程。其实大可不必,人不是这么容易就给带偏的,想把人带沟里,平均需要一个9年义务教育的时间。

其实提醒我的人是对的,最近发生的一系列事情,让我对中国的年青人深深的敬佩。比我这种80后牛逼到不知道什么地方去,我虚心的接受批评。我记得鲁迅曾经说过类似的话:“本领要新,思想要旧。要新本领旧思想的新人物,驼了旧本领旧思想的旧人物,请他发挥多年经验的老本领。一言以蔽之:前几年谓之“中学为体,西学为用”,这几年谓之“因时制宜,折衷至当”。“现在这个年代我讲vim,也有点守旧的意思。我也是真心建议大家不要学习,尤其是现在有那么多的新工具。计算机编程行业进化的比较快,希望年轻人不要带着历史的包袱上路。这让我想起了一个圣经里的故事,魔西带着自己的族人,在西奈半岛转悠了40年,才前迦南之地,为什么呢?因为这40年,可以让这些奴隶差不多都去世了。人一旦成为奴隶,是很难挣脱自己的枷锁的,肉体上的枷锁消失了,精神上还有沉重的枷锁。

我觉得如果你想折腾vim的话,可以当作一个玩具。我举个现实中的例子吧,前段时间我颈椎病了,就想搞个站立的办公桌,因为我自己的电脑桌是手工做的,很原生态,纯木头做的。我就想,老家有木工工具,我老爸在因为吸烟过度变成残疾人之前,他会一定的木工,算不上能工巧匠,但是做的桌子是没问题的。我就想,要不我也自己搞一搞木工试试,如果老家的工具不够的话,我群里那个淄博的熊大买了一套木工工具,我可以搞来用一下。

于是我就到网上找了一下,我发现了一片新天地。真的有人手工做家俱。有钱人买红木家俱,有的人图便宜,买宜家的那种一次性家俱,还有的人,真的去深山老林里去挖木头疙瘩,然后用工具搞成木板,自己做家俱。并且,这些人乐在其中。我看了以后,大为感慨,但是也真的不想那样做个桌子,就自己做了两个简单的,一块木板加四根桌腿。说实在的,给你一块木头,你搞成一块木板,看别人做很简单,自己做,那真的是不行,我差点把自己搞成残疾,搞坏了5块木板,才搞出来两块能用的。我还是用的比较容易加工的桐木板做桌面,松木做桌腿,我本想搞个榫卯结构,但是真的是看着容易做着难于上青天啊!于是,我就放弃了继续做更复杂的家俱的想法,只做了两个小桌子,高一点的放显示器,低一点的放键盘,我本想做成可升降的,但是实在是做不出来。原理很简单,动手能力是真不行。

这种情况和我介绍vim是一样的,我相信有人会看到我介绍vim,从而试了一下,可能只会三五个操作,就放弃了。就跟我做家俱一样,我内心也不喜欢做家俱,不想花那个时间投入在木头上。但是有人有时间与精力投入在其中,并从中得到乐趣。我内心知道我非常喜欢编程,看编程的历史,折腾编程的设备,并且乐在其中,所以我不觉得我折腾vim是一种浪费,反而能从中体会到一种满足感。

我分享的原则,跟做家俱的人分享如何把一块树疙瘩解成木板一样,不乐在其中的人,是无法体会到深山老林中,用搞头刨一两天,再找个皮卡拉出来,然后找个院子清理泥土,再把树疙瘩按照造型做成形态各异的桌子,如果只算金钱的话,这玩意肯定是赔钱的。放在编程上,用vim在很多人看来,就更赔钱了,因为IDE都是免费的,就算是不免费,还都是可以破解的,用vim更像是有红木家俱不用,反而去用一块树根做桌子。子非鱼,安知鱼之乐。

360行,行行出红人!我也想当编程电台界的红人,可惜只成功过一次,有次去河北出差,一回来,健康码红了,当时就给吓尿了,当红人的感觉并不好。接下来,我从以下几个方面分享一下我使用vim的一些心得吧。我不清楚大家编程时用的工具多不多,反正我用的还是挺少的。多大概想了一下,最主要的功能也就是不到十个。我查了一下,目前我安装了30多个,但是绝大部分都是用了一个一两次,就忘记了。还有一部分我经常使用的操作,我竟然忘记了是在哪个插件里。所以以下我分享,我只说一下大体的功能,你知道可以有这些操作就可以了,至于用哪个插件,以我这些年用vim的经验,你所需要的功能,至少在十个插件中都有,不用自己写。

第一:大体的应用场景。

我用vim主要的场景就是两个,一个是随便修改一下配置文件,第二个是大头,写代码。第一个场景就不说了,我也不会天天修改配置文件,因此这时候随便用用得了,有什么用什么,比如某台机器上,有默认的vim就行,就算没有,我用nano也可以。基本上,机器上总有vim和nano二选一吧。修改完了,也就完了。不必对其进行什么配置。

第二个场景,写代码。写代码的话,最常用的功能之一是找到某个文件。第一种情况是,我只记得这个文件名中的几个字母,具体名字要么太长忘记了,要么太长我不想全部的出来,这个时候需要模糊查找的功能,有很多插件是做这件事的,我自己用的是telescope.nvim,以前我使用fzf,这两个插件的用法感觉大差不差吧。使用这个插件可以让你在只记住几个字母的情况下找到你要操作的文件。我把telescope.nvim设了几个快捷键,空格ff,还有绑定了空格fo,空格fb…… 这个看个人的兴趣了。

浏览文件的插件:nvim-tree.lua。这个插件其实跟telescope.nvim有不少功能重合的部分。

LSP:这个叫Language Service Protocol,微软搞出来的,微软现在已经是开源的抗把子了。我简单的讲一下这个LSP是什么东西,不是老色批哈,是语言服务器协议。在很久以前,比如我是写C语言的,我用的集成开发环境是Turbo C,然后我就熟悉了这个开发环境,后来,我又学习了Perl。因为我已经用了很久的Turbo C,我能不能用Turbo C来当作Perl的开发环境呢?答案是不能,因为Borland公司没有为Perl准备开发环境。而且在当时,编译器什么的,都是竞争关系,以C/C++为例,就有好几种编译器,甚至Borland公司和微软公司还爆发过编译器的战争。在我上学的年代,有微软的C/C++编译器,有Borland的,还有一家加拿大小公司Watcom的,还有DEC的,开源的有Gcc,现在有LLVM等。这么多编译器公司,不光出编译器,他们还要给编程搞一整套环境。于是,每个程序员都要熟悉相关的IDE,A家和B家肯定不同,B家和C家肯定不同……这样很麻烦。有了LSP这个东西,只要各家根据相应的协议来写,就可以不用换编辑器,一劳永逸的只使用一种编辑器,比如VSC,Vim,Emacs等等。只是你用Vim的话,有个问题是你要自己配置,并且继承了开源软件的一贯规矩,你得先试试哪个语言服务器适合你。主流的语言都有的,我就不详细介绍了。

第二:高亮,自动补全,格式化什么的

这些功能都有,甚至不止有一个,我的高亮用的是一个叫nvim-treesitter的插件,补全呢,用的是一个叫nvim-cmp。别人都说不能既要又要,比如鲁迅就说过,把牛杀了做祭祀,你就不能再耕地。但是在nvim中,有时候你可以做到我既要漂亮,又要完全符合你的习惯,只需要自己写或者定制一个插件就好。格式化的插件也有好几个。

第三:调试。按照我这种老菜鸟的水平,我一般每天都是写10行代码,调试到下班,所以,有个称手的调试工具是非常有必要的。如果你是使用的主流的IDE,那这个功能肯定是有的,其用途是编译器的输出信息,然后定位错误与警告位置,提供直接跳转功能。比如说编译器的第5行错了,可以使用一个快捷键直接跳转过去,我绑定的是Alt + j,使用后可以直接跳转到next错误,还绑定了Alt + k,跳转到上一个错误。我还让quickfix异步执行,这个要配合一个异步执行的插件。

除了这个,我其实用的挺多的是另外一个功能,我不知道其它的IDE如何配置,我相信是可以配置的。因为quickfix可以执行shell命令,所以我的应用场景是这样的。我有一台苹果的笔记本电脑,在这台苹果电脑上我有一个nvim编辑器,因为要写代码,写的代码不是跑在笔记本电脑上的,毕竟谁愿意在自己的电脑上装一些编译器什么的?又占空间,运行起来还不够快,我的软件是跑在一台FreeBSD电脑上,内存64G,固态硬盘1T,并且已经配置好了所有的编译环境,我不想在苹果电脑上再搞一大堆编译环境,又烦又乱。

我是这样用的,记得前面配置lsp么?我在苹果电脑上配置了lsp,我在苹果电脑上写好代码后,使用版本管理软件git推送上去,在那台FreeBSD电脑上完成编译,如果出错了,错误信息传送给我的苹果电脑,这些信息用来quickfix。当然了,这两台电脑上的文件路径信息尽量保持一致,或者写一个shell文件稍微的转换一下。这样的话,根本就不用管苹果电脑的性能,所以我用macbook air来开发,也没什么问题,原因是调试代码是在另外的机器上。

具体的配置,在电台里也没法一一的讲,我只是讲一下我大概就是这么来使用。

最后再来讲一下,有人会分享自己的vim配置文件,我的建议是,如果你想使用vim的话,尽量不要完全使用别人的vim配置,因为每个人都不一样,别人搞一大堆配置,你一下子也实在是不知道怎么用。如果你想玩的话,就从零开始慢慢搞,中国人核酸都能坚持三年,更不要提什么vim的这点难度了。如果你加载的插件太多,可能会有点慢,但是有一个方法叫延迟加载,95%的插件不用加载,所以一直都会很快,至于怎么不加载插件,这个要看你用的哪个插件管理软件,我用的是packer.nvim。我觉得还是挺快的。

5 1 投票
文章评分
订阅评论
提醒

2 评论
最旧
最新 最多投票
内联反馈
查看所有评论
懒懒龙
1 年 前

栋哥,我也是vim党,握个爪。对了罩门的文章怎么不见了?

JRTx
1 年 前

栋哥这个配置能进行单步调试吗,还是只是简单回传一些错误信息。

2
0
希望看到您的想法,请您发表评论x
滚动至顶部