周六晚上,烤焦的番薯过来问我,Vim 在完全没有插件的情况下,要怎么注释一段代码?我说你可以在 .vimrc 里面写一个函数,批量选择然后调用函数注释。烤焦的番薯说你这个太麻烦了,我告诉你我们 Emacs 怎么做,只要选中要注释的代码,然后 esc+x
输入命令:“comment-region”,这就搞定了。
我给他打了一串问号,我说你要这么说的话,Vim Ctrl+v
选中要注释的代码,然后 shift+i
插入 # 号,按两下 esc 就好了。虽然我觉得 Vim 这么注释也挺蠢的,但是好过要敲一整个单词。之后,烤焦的番薯向我虚心请教了一些 Vim 的基本用法,说还是要学习一下 Vim,不然在没有 Emacs 的环境下就 GG 了。于是我把我珍藏多年的 Vim 键盘图丢给了他,并向他讨要一个 Emacs 的基本操作相关的图,烤焦的番薯想了想说,Emacs 没有这样的东西,它需要你用心去感悟,不是三言两语能说明白的。于是我说,让我们为 Vim 和 Emacs 的伟大友谊干杯吧🍻!
我是怎么认识和学习 Vim 的呢?如果不是当年被人一顿忽悠,我现在可能也是一个 Emacs 用户。这个忽悠我的人,说来也不是什么厉害的人,但也不是不厉害的人——在我刚上大学的时候,关注了池建强的公众号 Mactalk,池老师的公众号,一开始真的就是发 Mac 的使用技巧,后来技巧慢慢发完了,开始发各种 App 推荐,后来 App 也被推荐完了,池老师开始放大招,就说到 Vim,给 Vim 一顿乱吹,什么“手指与键盘齐飞,代码与 Vim 一色”都出来了。
当时正值我初学 Python,Python 自带的 IDE 我就不多说了,看到池老师说道 Vim,心想天下竟有如此惊世骇俗的文本编辑器,而且和 Sublime 不一样,这是一个看起来就让人觉得很厉害的文本编辑器。而且学习曲线如此陡峭,我学习一发岂不是还能显得我学习能力强,有毅力?于是,我先照着池老师推荐的 .vimrc
配置文件给我的 vim 一顿配置,然后就开始照着 Vim 键盘图有事没事敲着玩。对于初学者来说,使用 Vim 是真的难受,比学习双拼还难受。双拼至少还能知道大部分声母的位置,然而我对 Vim 一无所知。池老师说(后面的图也是池老师的):
在这个蓝色的星球上,在编辑器领域,永远存在两股暗黑势力,他们就是 Vim 党和 Emacs 党,这两股力量势如水火,分别守候着两大上古神器:Vim 和 Emacs……不停的有新人入会,也不停的有旧人出走,因为很多人发现这两大神器的学习曲线是如此陡峭和诡异,在没有发现神器的强大力量之前,这些人就离开了,去寻找 Eclipse 和 jetBrains 的庇护。但是永远会有一些人留下来,通过了艰难的考验,坚定的守护这两大神器……
不过好在 Vim 再怎么难受,熟悉一个月就好了,大部分的操作都熟悉了。对于需要操作的工具,花时间熟悉就可以了,所谓熟能生巧不过如此。于是我现在也能拿 Vim 来炫耀了,在别人面前打开 Vim,在键盘上一顿操作,这个时候周围的人就会根本不知道我在干什么,也不知道我在用什么,只知道我在键盘上一顿操作,屏幕上的代码好像也没增加多少。
但我对 Vim 的好感却与日俱增,因为我逐渐感受到 Vim 带来的效率提升,这种感觉体现在快速精准的定位,用 Vim 的键盘定位比用鼠标的移动、点击、选中快得多,把手从键盘上移动到鼠标上是很浪费时间的,而且这种手动来动去的感觉很不好,很烦躁,会打断思路,操作一点都不连贯。这大概也是大多数 Vim 爱好者所共同信仰的吧。Emacs 虽然也是键盘流,但是过度依赖修饰键的话,按起来好像感觉也不错,我觉得很酷。
后来我拿 Vim 干过很多事,除了写 Python 外,我还拿 Vim 写过 LaTeX,拿 Vim 写 Hexo 博客,用 vimwiki 写日记、记笔记……反正只要与文本有关的东西,我都想拿 Vim 来操作一遍,这是病,得治。毕竟 Vim 不是专业的文本处理工具,拿来写代码可以,拿来写 LaTeX 也还行,但是如果拿 Vim 来大量操作中文,那就是真正的有病了,光是切个输入法就能把人烦死。我就是那个被烦死的人。但我觉得这在 Emacs 上不是问题,毕竟 Emacs 的操作都要搭配修饰键,在修饰键眼里,输入法即是空,有没有都不影响功能。这点我是佩服 Emacs 的。
当然 Vim 也不是没有缺点的,毕竟他只是一个文本编辑器,功能全靠扩展,和正经 IDE 比起来是能被甩好几条街的。几个月前我曾经问烤焦的番薯你用 IDE 么,他说不用,就用 Emacs,因为 Emacs 用的时间最长,配置文件最熟悉,有一种一切尽在掌控中的感觉。我说好的,其实我用 Vim 也是这样觉得的。然而前段时间烤焦的番薯又来问我,平时你是怎么分配 Vim 和 VSCode 的使用的?我说我不用 VSCode,然后烤焦的番薯就问我那你觉得 Vim 的语义补全功能如何,我说还凑活吧,跟正经 IDE 比不了,但日常娱乐还是没问题的。他说对的,我现在也有点眼馋 IDE 的语义补全了。
烤焦的番薯曾经和我分享过他的 emacs.d 配置文件,我打开一看这才一百多行配置文件,我说我的 .vimrc 有三百多行呢,虽然配置行数并不能说明什么问题,但是我作为一个不正经的人,就是认为配置行数越多越厉害,烤焦的番薯跟我说,你看的只是一个主配置文件,他引了好几个其他配置文件,每个都有一百多行呢。到这里我只能说,配置行数真的不能说明什么问题,代码不在多,而在于质量。
后来烤焦的番薯问我,Vim 有内置的补全么,不需要语义补全,只要能补全输入过的单词就好了,我说没有,我说你 Emacs 能有吗?他说你别误会,我这不是挑衅,我就是真的好奇问问,Emacs 也没有的。我说好吧,可能神不屑于用这些个功能。
Vim 被称为编辑器之神,Emacs 被称为神的编辑器,但凡是和神挂钩的,就让我们一起为 Vim 和 Emacs 的伟大友谊干杯吧。
最近在学习vim,博主的文风很有意思,想必也是个非常有趣的人
Vim 有内置的补全,具体可以看 ins-completion, 补全单词,文件路径等等都是没问题的。
我用VIM就是因为远程连接LInux的情况下,不能使用GUI的界面工具。
vim 里面 ctrl-n 可以补全书如果的单词
那就很 6 了。不过我对 IDE 的眼馋,其实只是因为 gui 比较好看 ˊ_>ˋ。正经讲,vim 和 emacs 的语义补全插件整一番也是 OK 的。