很多人说用 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 文件里,还要把诸如:
.cpp
void translate(float x, float y, float z) ; void rotate(float x, float y, float z, float theta);