知乎可能知道我用Vim,最近给我推了几篇关于Vim的文章,一些关于在9102年还应不应该使用Vim的争论。看了之后,想起自己入坑的经历,所以分享一下。至于有木有人看到,那都不重要了。

黄金时代

想当年,我主要是进行Visual C++下的开发,那时候用得还是普通PC作为开发机,自然就在Visual Studio进行开发工作了。编辑、编译、调试一条龙,很爽有没有?当时虽然也听说过神之编辑器Emacs和编辑器之神Vim,但下载试用一下,看看教程的厚度就放弃了,木有什么动力去学习其中之一。

那时候,除了写代码外,我有时还要处理一些文本,比如整理一下数据、处理一下测试结果之类的。作为一个合格(懒惰)的码农,只要重复超过10次(或者更少?),我就会想办法看能不能有批处理的手段。也就是在这样的情况下,接触到了正则表达式,一时间惊为天人,用来整理数据是多么的方便啊!当时也没有VSCode、Sublime Text什么的,对于普通的编辑工作主要就是在Ultra Edit上进行。Ultra Edit既支持正则表达式,又支持列编辑模式,对于大文件的编辑也得心应手,配置配置,语法高亮和列出文件中的函数也不在话下,只能说“真香”。

就这样,用Visual Studio写代码,用Ultra Edit编辑其他文件,很是过了一段舒心的日子。

白银时代

以当年那份躁动的心,好日子过久了,慢慢就不满足现状了。先是原来用的Visual Stuio版本太老了,需要升级到更新一点的版本,升级后发现很多快捷键都变了,有点不适应。然后发现Ultra Edit也有新的版本,自然也不甘落后了。问题就出在新版本的Ultra Edit上,升级后发现那个版本的正则表达式总有这样那样的问题,用起来没有了原来行云流水的感觉,忍了一段时间后实在是忍无可忍,决定更换编辑器。

用什么编辑器好呢?使用了其他编辑器,用起来都差不多,不过快捷键和Ultra Edit很不一样,又要重新熟悉。这时候就想起了我们编辑器之神,既然都要花费精力,何不尝试一下与Emacs以及“其他编辑器”三足鼎立的Vim呢?于是花了点时间熟悉了Vim的操作,顿时感觉相见恨晚,Vim中的正则表达式引擎可不是Ultra Edit能比的,Visual C++就更不用说了。在度过初期的适应期后,发现对于文本文件的处理效率比原来更高,只有一个字,“爽”。

当时除了继续维护Visual C++的程序外,还要开发Tandem上的C程序,这些程序虽然也是C程序,但多了一些非标扩展,程序也不算长而且不能在Visual C++上编译,所以本来就要在编辑器上进行一些代码编写工作,干脆把coding任务也转移到Vim上。只要在Vim中配置一下编译命令,对于Visual C++程序也是能正常编译并且能跳转到编译出错的地方,所以所有编辑工作基本上转移到Vim上。

这一阶段随着我的工作从Visual C++和Tandem转移到Linux Server之后达到巅峰,作为主力编辑器,自己全手撸了超过3000行的Vim配置,包含好像超过80个插件,什么配置管理、tag跳转、clang代码跳转应有尽有。而且为了适应内网、外网,Linux、Windows、FreeBSD等不同环境、不同性能限制,在配置中对插件进行了分组管理,从简便高效的最小配置到以IDE为目标的配置都可以自定义。当时这份配置作为项目组的非官方标准配置被大家广泛采用,在我久不维护的现在,还有人在低版本的Vim上使用这份配置。

黑铁时代

手撸配置一时爽,一直撸一直爽。自己的配置当然是最符合自己的习惯的,用起来也是最顺手的。但随着Vim版本的不断升级,特别是Vim 8.0版本的推出,新增了异步机制,很多插件都有了更好用的替代品,特别是包管理软件也要更新换代,各种插件加载、配置的写法都得更新。这时候感觉有点跟不上节奏,懒得更新了。这时候,发现了SpaceVim,一份现成的、结构化的配置,干脆弃用了自己的配置,转用SpaceVim,并进行了一些定制。此后就比较佛系了,有问题就提个issue,能解决就提个Pull Request,个性化的需求就放到自己的配置中,一切回归平淡。唯一不变的就是Vim的主力编辑器地位仍然稳固。

现在唯一的问题就是SpaceVim对Vim最低版本有要求,而我们的主力开发环境还在RHEL 6上,所以只能自己编译一套新版本的Vim才能用。不过对于开发服务器基本固定的我来说,折腾一次之后也不会有太大的问题了。

总结

正如知乎上很多评论说的,既然已经习惯了Vim,Vim又能基本满足要求,那么有什么理由更换为其他工具,再学习一套或者多套快捷键呢?

在9102年的今天、在正版化要求越来越高的今天,IDE在不断式微,以VSCode为代表的编辑器正在占据越来越大的版图。既然都是编辑器加插件,现在也有了SpaceVim之类的现成配置,已经不需要手撸配置了,Vim的门槛也比以前低了不少。随着微软Language Server Protocol的推出,以往只有IDE能实现的精确的上下文补全、文档提示、重构等功能都可以通过LSP接入到编辑器中。Vim也是有支持LSP的插件的。与其换到其他编辑器中,使用半吊子的Vim模式,何不继续使用越来越好用的Vim呢?

其实还有一个不太具有代表性的原因,现在随着对信息安全的重视,我们的内网早已从普通PC机转到云端,用一个瘦客户端访问一台虚机桌面。也不知在一台物理服务器上分配了多少虚机,反正那性能是不用期待太多的,反正全新拉一次代码(含Boost库)的时间得几十分钟。而我们作为开发机的Linux服务器是一台24核的物理服务器,24进程并发编译的速度可是杠杠滴。

当然,随着VSCode重磅推出远程功能,现在用VSCode也是很方便的。不过,给个换的理由?当然了,在这个年代,我也是不会劝人入Vim坑的了,一般我都告诉新人,VSCode很好用,某某同事精通VSCode的配置。。。

Tags:

Categories:

Updated:

Comments