本文已转至http://cn.abnerchou.me/2014/03/02/bfdaadb0/

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

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

公告:《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的入门难和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' a` i` 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

抽奖活动详情

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

  1. 在本系列文章中留言;
  2. 关注博主。

(如果可能的话再推荐本系列任一文章,不胜感激。)

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

《VIM-Adventures攻略》前言的更多相关文章

  1. Python数据分析与挖掘所需的Pandas常用知识

    Python数据分析与挖掘所需的Pandas常用知识 前言Pandas基于两种数据类型:series与dataframe.一个series是一个一维的数据类型,其中每一个元素都有一个标签.series ...

  2. 10个步骤教你如何安装Anaconda安装,Python数据分析入门必看

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:小白 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行 ...

  3. Python数据分析——numpy基础简介

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:基因学苑 NumPy(Numerical Python的简称)是高性 ...

  4. 《谁说菜鸟不会数据分析》高清PDF全彩版|百度网盘免费下载|Python数据分析

    <谁说菜鸟不会数据分析>高清PDF全彩版|百度网盘免费下载|Python数据分析 提取码:p7uo 内容简介 <谁说菜鸟不会数据分析(全彩)>内容简介:很多人看到数据分析就望而 ...

  5. 《Python金融大数据分析》高清PDF版|百度网盘免费下载|Python数据分析

    <Python金融大数据分析>高清PDF版|百度网盘免费下载|Python数据分析 提取码:mfku 内容简介 唯一一本详细讲解使用Python分析处理金融大数据的专业图书:金融应用开发领 ...

  6. [Python数据分析]新股破板买入,赚钱几率如何?

    这是本人一直比较好奇的问题,网上没搜到,最近在看python数据分析,正好自己动手做一下试试.作者对于python是零基础,需要从头学起. 在写本文时,作者也没有完成这个小分析目标,边学边做吧. == ...

  7. 【Python数据分析】Python3多线程并发网络爬虫-以豆瓣图书Top250为例

    基于上两篇文章的工作 [Python数据分析]Python3操作Excel-以豆瓣图书Top250为例 [Python数据分析]Python3操作Excel(二) 一些问题的解决与优化 已经正确地实现 ...

  8. 【Python数据分析】Python3操作Excel(二) 一些问题的解决与优化

    继上一篇[Python数据分析]Python3操作Excel-以豆瓣图书Top250为例 对豆瓣图书Top250进行爬取以后,鉴于还有一些问题没有解决,所以进行了进一步的交流讨论,这期间得到了一只尼玛 ...

  9. 【搬砖】【Python数据分析】Pycharm中plot绘图不能显示出来

    最近在看<Python数据分析>这本书,而自己写代码一直用的是Pycharm,在练习的时候就碰到了plot()绘图不能显示出来的问题.网上翻了一下找到知乎上一篇回答,试了一下好像不行,而且 ...

  10. Python 数据分析(二 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识

    Python 数据分析(二) 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识 第1节 groupby 技术 第2节 数据聚合 第3节 分组级运算和转换 第4 ...

随机推荐

  1. 理解 break, continue, return 和 exit

    你们知道 “break”, “continue”, “return” 和 “exit”的作用吗? 它们是功能强大的语言结构体.下面通过一个测试函数来说明它们之间的不同. 1 2 3 4 5 6 7 8 ...

  2. Android 解决listview中checkBox错位选择

    假如ListView,分成2页(或者设置数据可以纵向拉,可隐藏),每页3条数据,每个Listview的Item 里面有个checkBox,现在,当我选择第一页的前两天数据,翻到第二页,竟然第二页后两条 ...

  3. Set的并集

    public static void main(String[] args) { Set<Long> old = new HashSet<>(); for (int i = 0 ...

  4. alias, bg, bind, break, builtin, caller, cd, command,

    bash,  :,  .,  [, alias, bg, bind, break, builtin, caller, cd, command,       compgen, complete, com ...

  5. 2013第38周日Java文件上传下载收集思考

    2013第38周日Java文件上传&下载收集思考 感觉文件上传及下载操作很常用,之前简单搜集过一些东西,没有及时学习总结,现在基本没啥印象了,今天就再次学习下,记录下自己目前知识背景下对该类问 ...

  6. 重温Java的类加载机制

    原文地址:http://blog.csdn.net/hitxueliang/article/details/19992851 首先简要的说一下类加载器   我们知道,虚拟机的指令存储在以.class为 ...

  7. PC格局已改变 联想未来的短板在哪里?

    PC格局已改变 联想未来的短板在哪里? 作者:孙永杰2013-11-13 11:34评论:15   [PConline 品科技](原文标题:PC格局已改:联想未来的短板在哪里?)近日,联想集团公布了截 ...

  8. 如何将Java Web项目部署到服务器上

    转自:(此处更详细)http://blog.csdn.net/gulu_gulu_jp/article/details/50994003 一.前言 前面我们已经尝过了在云服务器上部署代码的甜头了,现在 ...

  9. libvirtVirsh

    virsh基于不同协议远程连接libvirt drivers(Hypervisors) 基于OS系统账号ssh登陆

  10. Java毫秒转换成日期格式

    import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.uti ...