为什么还有人用VIM?

关注者
991
被浏览
1,878,826
登录后你可以
不限量看优质回答 私信答主深度交流 精彩内容一键收藏

很多人说用 Vim 是因为键位比较方便,其实这只是部分原因,不知道你思考过没,为什么今天大部分 Editor/IDE 都支持 vim keymap 的情况下,还有那么多人用 Vim 呢?如果仅仅因为键位原因,他们大可以用其他东西啊,为何还继续用原始的 Vim 呢?

也许在你看来,有的人配置 Vim 一半天最后就是类似 IDE/Vscode 的样子,既然如此,那么为啥那些人不直接去用 IDE/Vscode 呢?(二者也都支持 vim keymap),为什么他们还抱着原版的 Vim 不放呢?难道真的是他们没听过/没用过时下最先进的 Editor/IDE 么?

事实可能恰恰相反,很多 vimer 都是非常热衷尝试各种新的编辑器的,我给 vscode 写过不少高赞回答,也给 atom editor 开发过插件,不少 vimer 机器上 terminal/gui based 的 editor 加起来都有十多个,对主流 editor/ide 的熟悉程度未必比非 vimer 差。

那么究竟为啥还有人用 vim 呢?答案楼上赵启明老兄已经说了:" Vim 大概是世界上扩展能力最强的编辑器" 。Vim 就像编辑器世界里的 MineCraft,你说 MineCraft 最终目标也就是去杀条龙,为什么那么多人不直接玩也能杀龙的黑魂/老头环,却一直迷恋 MineCraft 呢?

因为 MineCraft 每一寸土地都可以定制化,每种游戏元素都可以自己制作(除了工具武器制作外还可以制作各种玩法的副本关卡,还有人用 MC 里的红石从门电路做起,搭了个 CPU),而 Vim 里每个字符你都可以定制。

方便定制体现在两个方面:首先是能定制的地方很多,到处都能改(不像 vscode 一样对插件开发者诸多限制,连个 toolbar 按钮你想加都加不了);其次是非常容易上手修改,改的代价非常低,不用加个简单功能都要创建个插件项目,编辑 package 配置等一堆七七八八的文件,一半天才能开始写一行代码。

我用过非常多的编辑器,有一些至今我都非常喜欢,但不管我多么喜欢一款编辑器,总有一些地方是我不满意的,碰到这种时候,大部分我只能祈求开发商发慈悲哪天给我加一下,即便有些开源的,支持扩展的,很多都没达到 Vim 的扩展性,可以那么容易的让普通用户随心定制,四处定制。

用其他 Editor/IDE 的用户大部分都是下下扩展,改下按键之类的,而 vim 用过一年以上的几乎人人都可以随手扩展,举几个例子:

例子1:格式化代码

比如我看 html 的时候有时候很混乱,需要格式化一下,我知道有专业的格式化软件,懒得费时间找了,直接几行 vimscript 搞定:

function! Html_Prettify()
	if &ft != 'html'
		echo "not a html file"
		return
	endif
	silent! exec "s/<[^>]*>/\r&\r/g"
	silent! exec "g/^$/d"
	exec "normal ggVG="
endfunction

随手一段小代码,然后配置给 F12,碰到 html 直接 F12 就完成格式化了,根本不用费力找工具。

(Vim 里有各种专业格式化插件,包括基于语义的,能理解代码的格式化工具,我只是演示下扩展能力,简单需求不用找,三分钟解决)。

再比如说我写 C++ 时,最痛苦的就是头文件里写了一堆类成员函数定义,把他们拷贝到 .cpp 文件里,还要把诸如:

void translate(float x, float y, float z) ;
void rotate(float x, float y, float z, float theta);