自从有了计算机,人们就想向其灌输自己的想法。

要想对其输入,自然离不开文本编辑器。

公告:《VIM-Adventures》的作者愿意免费赠送一个此游戏的激活码给在本系列攻略中留言的用户。活动详情请见本文末。

最近一直在学习Emacs,这个几乎和我同龄的软件,在发展如此迅速的时代依然有不少程序员的死忠粉,不禁让人诧异。友人常问:”现在既然都有IDE了,还学那么古老的编辑器干什么?” 刚开始我也这么认为,但自从在Linux下写程序后才发现,Linux的IDE是多么的坑了。且不说安装要费老半天劲(apt-get 得到的一般不是最新版本),装好后调试编译环境又是半天,最可气的是,一切都弄好后,突然要换电脑工作,我总不能把硬盘拔了带着吧。而且常用IDE产生了IDE依赖症,甚至不用某个厂商的IDE,就不会写代码了。于是在网上就找到了Emacs,支持自定义化配置,配置文件小巧可随时备份,甚至可以用来煮咖啡。

等等,等等,题目是vim啊,说了半天Emacs是作甚?当然我认识vim比Emacs要早,因为vim是Linux系统自带的vi的进阶版。当时是为了远程修改一些配置文件才不得已学了两下,但发现其不够直观,进入后完全不知道该如何操作。也就了解了下如何插入,修改罢了。

但Emacs欢迎界面就有一个15分钟左右的教程(怎么又扯回Emacs了)。上手难度陡降,但发现越学深入越有东西要学,比如系统配置,eLisp语言,自定义插件等等……一切都还好,但……但……光标的移动有点太……难了吧……C+n下一行,C+p上一行,C+v下一页,M+v上一页,C+f向后,C+b向前(C代表Ctrl,M代表Alt或类似键)……有时只需要光标向后移一下,竟然要按两个键,有点太低效了吧。这时候vim闪亮登场(我是用Emacs下的Evil插件来实现vim控制的),它的控制只需要h,j,k,l,单键即可控制光标移动,有点像上下左右方向键。所以,我觉得有必要结合Emacs和vim来降低其学习曲线了:

常见编辑器的学习曲线<图>

Vim学习曲线
Vim学习曲线

vim的入门难和Emacs的后期变态让人望而生畏。vim入门难,到底难在什么地方呢?难在养成一种习惯,即键盘上26个按键不再是普通的按钮,其还附有了特殊的意义。而且其上下左右键是k,j,h,l,这是多么的蹩脚啊,为啥不向CS学习下设置成w,s,a,d。因为w,s,a,d其本身还有特殊含义。vim的按键已经可以算是最优了,在不触动鼠标的情况下,可以快速完成各种操作,比如dd是删除一行,db是删除前一个单词,dk是向前删除两行等等。以前都是要多次按键,或者用鼠标协作,现在完全可以用键盘快速完成。

有的人用不惯vim的方向键就早早的退出了。其实只要练习,没有什么难的,这里有个简单的贪吃蛇游戏,就是用vim的方向键来控制。在吃的时候要按 i (即vim里的插入功能) 才可以,并且在吃完后按Esc返回键盘控制。我的最高分只有700。 T_T

开始界面
开始界面

当然这里要说的VIM-Adventures 不单单用游戏的形式来练习光标控制,还可以通过游戏学习到vim的按键操作。通过其可以学习的操作有:

h j k l : w W e E b B x X r d dd D ~ 0 ^ $ f F t T ; , % z zt zz zb g gg G 1 2 3 4 5 6 7 8 9 count [count] * # n N p P “ y yy Y reg :reg registers “” “- “_ “0 “1 “2 “3 “4 “5 “6 “7 “8 “9 “a “b “c … “x “y “z “A “B “C … “X “Y “Z i I a A c cc C s S o O word WORD sentence paragraph { } ( ) [{ ]} [( ]) . text-objects aw iw aW iW as is ap ip a[ a] i[ i] a( a) i( i) a< a> aB iB ab ib i< i> at it a{ a} i{ i} a” i” a’ i’ ai H M L nu nonu nu! nonu! | / ? ` ‘ m :marks :delm :delmarks :delm! :delmarks! undo u :undo CTRL-R :redo redo

在其后的章节,我将详细讲解其每一关的攻略。因为我发现本游戏不光需要知道vim的操作,还有一定的解谜成分。并通过游戏本身了解到vim编辑器一些自身的特性。

敬请期待~

LEVEL 1-3

LEVEL 4 5

抽奖活动详情

用户需要达成以下两个要求即可获得抽奖资格:

在本系列文章中留言; 关注博主。 (如果可能的话再推荐本系列任一文章,不胜感激。)

抽奖将在本系列文章连载结束后进行,届时将通过博客园站内信通知获奖用户。