就在几个小时之前,我回答了一个关于推荐开发工具的问题,不少朋友表示喜欢和鼓励,很是感谢!我也很想多写一些细节,因而便起意开一个系列来聊聊我屡次提到的 Vim。html
这将是一个 Vim 的教学性质的系列,可是和绝大多数同类教程不一样的是,个人重点不在于技巧的传授,而是在于对其观念的理解和阐述。Vim 之因此能卓尔不群靠地就是一种自成一派且精悍有效的“编辑器哲学”(固然 Emacs 也是),就好像网游千千万却惟有 World of Warcraft 一览众山小,那靠地不是技巧与外在,而是不同凡响的世界观。这个世界和这个时代,不少东西都能博人眼球,使人叫绝,但惟有那些体现出独特价值观的人或事物才能在人们内心留下难以磨灭的印记。vim
我首先来说讲宏观上的心得体会:如何学习 Vim?这个问题的背后其实隐含着不少诉求,好比:segmentfault
我理解,我都能理解。如今我不会批判,将来我会逐一解答,请稍安勿躁。其实在我身上发生的故事就颇有表明性,从我接触 Vim 到如今足足超过两年时间,在此期间我无数次鼓起勇气想要征服这个巨兽,却也一样屡次的短短几天就败下阵来(使人欣慰的是这些打击却是让我从新认识了许多别的编辑器);也试图偷懒直接使用其余人的 .vimrc
或者集成安装包,但每次都是好景不长,一旦遇到想要微调的时候就抓狂不已了……编辑器
说真的我不止一次想过,或许我一生都无法真正学会 Vim,可是心里坦白地说:我对本身很失望。工具
我不想把这篇文字变水,因此心里独白就省略了。真正的关键在于一年半之后,也就是距今半年之前,一我的改变了我对于学习 Vim 这件事情的态度,或者说他刺激了我让我有了新的动力和方法,我为本身制定了计划并依次施行,终于成功地征服了它。学习
征服,不是指我无敌了,而是说我对这个工具已经没有任何使用障碍了,即便我还有不少不了解的东西,我也知道如何去应对和掌握它们,剩下的只是时间问题。征服实际上是一种领悟,我融入了 Vim 的哲学而已。开发工具
我之因此要说这些就是想告诉大家,学习 Vim 并不困难,不须要你多么天才,也不须要你多么努力。你只须要一个想要用它的意愿和一条忠恳的建议——也就是那我的教会个人:保持简单(Keep it simple enough)。测试
这就是所有的秘诀。惟一阻碍你学会 Vim 的缘由就是你老是把它想的太复杂,因此从一开始请放轻松,接下来我会与你分享几乎全部的细节,你必定不会让本身感到失望的!字体
另外,为了客观证实我不是吹牛逼(好比抄别人的教学帖子来博名望),也为了给你树立一点信心(个人确知道如何学好 Vim),贴上我刚完成的 Smaterer 测验分数:spa
其实这个测试不算最难的,满分 800,很遗憾我就差一步到 Master 级别,不过我已经很高兴了。半年而已,我没有白费功夫(并且不是每天像读书考试那样的学,很轻松很愉悦),我相信你必定能够学得更快更好。
若是有些事是不得不去忍受的,那就去寻找享受它的办法。
我这人不算聪明,但贵在有自知之明,有一套很是适合本身的学习方法,因此只要是我想学的就没有学不会的(但不会像天才那样迅速)。通过长达一年半挫折体验的磨砺,我开始修正本身的学习方式,如下是第一阶段的总结。
有些东西是基础中的基础,永远也摆脱不了,Vim 也不外如此。咱们没法逃避这个过程,但却能够选择接受它的方式。
Vim 的基本移动就是 h
j
k
l
这四个键,分别表明 左
下
上
右
。很特别是吗?好吧,我认可是很古怪。然而你必需要习惯它们,而且永远不要更改它们的键位!由于这是 Vim 的哲学:
这些键位的存在当然有其历史缘由,但更重要的是如下两点:
1. 摆脱对视觉控制的依赖。也就是摆脱使用鼠标等可视化辅助工具来进行光标定位的习惯。人的大脑是颇有趣的,逻辑思惟和形象思惟分别由左右脑来控制,对于常写代码的人来讲,保持逻辑思考的专一性很是重要,而不停的使用鼠标指针在屏幕上找来找去无疑会下降这方面的效率。
2. 这四个键在右手标准键位附近,对于移动手指产生的消耗最少。
你应该领会这个意图:保持简单。
但是真正的问题在于习惯真的很难改变,这种移动方式难倒了很多初学者,因此我选择了一些更有趣味的方式。我认为这种改变其实是在锻炼咱们接受新的交互方式,而学习交互的最理想方式无疑是寓教于乐,也就是玩游戏。就连设计软件应用也是同样的道理,若是你的应用里与一些很是规的或者复杂的操做,你总会设计一些互动性很强,很友好的引导教学。Github 为了推广 Git 是怎么作的?他们联合 Code School 录了两套很是棒的视频,其中还包含在线的模拟终端操做!
而对于 Vim,我给你四条建议:
h
j
k
l
来控制方向而已。注意,只有在插入模式(i
)才能吃到东西,只有在常规模式(ESC
)才能移动方向。完整的流程以下:移动 -> 对准目标 -> 按下 i
直到吃到目标 -> 迅速按下 ESC
-> 移动。关于模式,咱们下次解释。实际上,以上四款推荐都不是单纯的上下左右练习,哪怕是操控最简单的也会有其余键位的练习混杂其中。可是这个阶段的目标只是征服上下左右而已,个人建议是保持注意力在这个目标上,保持简单。
我在这些游戏和互动式教程身上花费了一个多月的时间,天天平均在 20 分钟左右(也就是 10 个小时),我说过我不算聪明人吧?固然我也没有那么笨啦,主要仍是由于我真的喜欢玩游戏,喜欢挑战本身的极限。不过我真正想说的是,不要着急!没有人期待你三天拿下 Vim,你着急给谁看呀!我建议你学 Vim 不表明我认为其余编辑器/IDE 就是一坨屎,你能够继续使用别的工具来保持工做和学习的效率,只是 Vim 是值得一学的,并且是有点难度的东西,你可以保持抽点时间来练习一下就很不错了。
在下一阶段我还会继续解释为何要保持简单,继续分享我对 Vim 哲学的感觉,另外咱们还将了解到很是重要的——模式(Modes)。记住,保持简单,保持期待。
尾记:上文中提到了“一我的”,那个改变了我对 Vim 认识的人,他叫 Gary Bernhardt,他曾经录制了一套很是棒的教学视频系列,不过不是专门针对 Vim 的,主要话题涉及重构、程序设计、测试驱动开发、工具使用技巧等等,涉及到的语言主要是 Ruby Python 和 Shell Script。曾经这些视频很便宜,9美刀/月,我有幸在那时所有得到(总共就花了这么多,遇上恰当的时间,一个月内所有下完了)。遗憾的是他如今的注意力放在了别的事情上,已经再也不录制视频了(Twitter 上好多人强烈呼吁他继续,结果他连 Twitter 都不玩了——固然,不是由于这个缘由),而过往的视频都打包分红四部分单独出售,总售价不菲。然而,若是你不差钱的话,我依然建议你买来看一看,不仅仅是由于 Vim!事实上在那些视频里他专门讲解 Vim 的时间很是少,可是全部的操做都是在 Vim 里即时完成的,若是你看了就会知道那是一种什么感受,什么叫作如臂使指,什么叫作为所欲为。虽然他确定不是独一无二的高手,也不必定是最强悍的一个,可是我但愿我能达到这个水平就很是很是知足了。你看,这个世界上总有一些人一些事会在不经意之间改变你的观念,在一个采访他的视频里有人问道:你是如何把 Vim 用的如此好的?他回答:保持简单。个人理解是,高手口中的保持简单,背后蕴含着无数的探索和尝试,然而这不是困难,真正的困难是你没法理解和保持这种简单的目标。当你费尽心思想要打造最强编辑器,结果仍是不能达到你的理想状态而后不得不放弃的时候,你已经背离了 Vim 的哲学。这个系列,虽然讲的是 Vim,但我但愿可以表述出个人感悟,而且让读者能感觉到我当初的感觉,而我相信所谓“Vim的哲学”也必定可以帮助你在其余任何领域找到共通之处,这才是学习 Vim 的最终价值和意义吧!