今天又重新学习了一下Vim,对其中的一些命令和设置又多了一重认识和心得。
首先还是说说为什么要用Vim吧。我特别遗憾的是,我身边的人基本都不用Vim。他们都是在一个类似记事本的编辑器里面把代码写好,然后再上传到工作站上。为什么呢,因为大家都特别熟悉Windows嘛,而这是我所不推荐的,如果让我带徒弟,我会反对它这么做。在我看来,两者的区别就好像用锄头锄地与用拖拉机耕地一样——都可以达到目的,但是前者效率低,后者效率高。同时后者所需要的技能也更高。要想达到良好的状态,需要花费更多的时间与精力掌握它。但是一旦掌握了,那肯定是会大大提高耕地(coding)的效率。最最重要的,我觉得后者的过程是创造性的,是开放的,而前者是死的,是没有任何创造性而言的。
个人Vim的使用一般会经历三个阶段。第一个阶段就是会使用一些非常简单的命令,类似h, j, k, i, a之类的;第二个阶段是会用一些比较复杂的命令了,类似行操作,ma, map 之类的。第三个阶段可以自已写一些命令脚本,可以订制自己的vimrc。
下面我说几个最近又有新认识的命令吧。
移动:w: 下个单词词首 b : 上个单词词首
e : 下个单词词尾 ge: 上个单词词首
以前光会会h j k l移动,从行头移到行尾用了老半天时间,效率非常低。
删除:一般删除一行用dd,删除到行尾用D,删除到行首用d0,删除到结尾用d$,删除n行用ndd。问题来了,我从17行要删到28行,我还得算一下一共有多少行,郁闷。所以就想写一个脚本来实现此功能,后来发现人家本身就有此功能。
%:17,28d 太帅了。
类似的还有复制与剪切:
复制 %:17,28co 32 把17~28行的内容复制到32行下面,原内容保留。
剪切:%:17,28m 32 把17~28行的内容移动到32行下面,原内容删除。