学习使用 vim 有三个阶段:
首先是孩童时期,刚刚开始接触 Vim,觉得非常别扭,这里也不顺畅,那里也不够高效,表现为在知乎上问,“Vim 到底好在哪里?”,或者“学完 vimtutor 以后该干嘛?”
接下来是青春期,感受到 Vim 的爽点,开始欣喜若狂的探索 Vim 的边界,表现为疯狂的尝试各种 mapping 和插件,阅读网上一切关于 Vim 的文章和内容,尝试一切可能的事情。
最后进入成熟期,开始移除所有无用的东西,真正变得高效起来。表现为开始冷静思考自己的工作流程,逐步针对性定制 vim ,让 vim 越来越顺手。
只有对编辑器足够挑剔的人,才会使用 Vim。真要尝试,你要先问问自己是不是对编辑器有很高的要求,是不是对身边的编辑器都有不满意的地方,还是只是好奇,并不希望投入多少时间:
当你真的决定入坑了,那么主要问题就是怎么完成第一个阶段到第二个阶段的切换呢。
(点击 more/continue 继续)
我的建议是,开始迭代你的 vimrc 配置,先要花 20 分钟把 vimtutor 过一遍,这个是必须的。然后 github/gitlab 上面建立个项目里面只有一个 init.vim,然后编辑你的 vimrc,里面就一句话:
source /path/to/init.vim
然后用刚刚学完的 vimtutor 的知识,开始用 vim 去编辑并迭代你的 init.vim。用 vim 是一个积累的过程,把你的配置托管到 git,然后一边学习网上的相关教程,一边逐步迭代你的配置,才能让你的 Vim 变得越来越顺手。
在这个阶段,不用把你的正式工作切换过来,原来用啥编辑器工作,继续用着那个编辑器,只是迭代 init.vim 的时候坚持用 vim 编辑就行,因为这时候切换过来,你只会充满挫折的离开。而你坚持用 vim 编辑和迭代 init.vim 的话,一方面可以巩固之前学习的 vim 键位,一方面可以把你最新学习到的内容加以练习和实践,每次更改了 init.vim 只需要命令行:
:so %
就能重新 source 当前文件了。
期间你可能会充满疑问,到底该不该用鼠标?平时大部分时候是在 INSERT 模式下面还是 NORMAL 模式下面?标准答案是平时干任何事情,最后都要复位到 NORMAL 状态,编程就像画画,大部分时候不是在输入新字符,而是在“合成/编辑”旧文本,因此 NORMAL 状态是一切状态结束后,不知道做啥时就先回归 normal 状态。
不过不用强迫自己,都有一个习惯过程,我才学习 Vim 时,一进去就 i 进入 INSERT 模式,靠上下左右来控制光标,当成 nano 再用,最后才 esc :wq 的。似乎不少人也是这样开始的,这样做是完全 OK 的,不要听某些老鸟说什么禁用方向键,学习的过程最开始都是先用新壶装旧水,习惯了,再逐步尝试新壶装新水。
刚开始就是要不管什么方法,先把原来可以做的事情,在 Vim 里找到一个方式去做,然后再逐步迭代,假设我当年一开始听别人的话把方向键禁止了,我估计我都用不下去。
同理,鼠标也一样,该用就用,我鼓励你在 Vim 里用鼠标,用上下左右,比如你装了个 NERDTree,就用鼠标去点,没有任何问题。等你熟练了自然会尝试键盘操作,等你更熟练了或许你直接把 NERDTree 给卸载了换更好的方法。
那么经过这样的迭代,你会逐步感觉到编辑 init.vim 也不那么费力了,似乎还挺顺手的,这时候就是将原有工作逐步切换到 Vim 的时间点了,恭喜你进入青春期。
当你真正进入成熟期后,你的收获会是两个方面的,除了熟练掌握 vim keymapping 外,更重要的是轻而易举定制 Vim 的能力,让他变成自己想要的样子,随着时间的增长,你不断发现工作中存在不够高效的地方,然后琢磨用更高效的方式代替,或者是一种新的用法,或用 VimScript 给 Vim 增添一条新命令,然后反复迭代,不用投入太多时间,但是每隔一段时间你都能变得比之前更高效一点,同时再也看不上其他编辑器了。
他编辑器,大部分用熟练了以后,效率基本就固化锁定下来了,我用 Vim 很多年,到现在我都在不断的反思和优化我的工作流,学习新的用法,能感受到持续数年的逐步效率提升,这种能持续很多年渐进式提升的感觉在其他编辑器里是找不到的。