Fork me on GitHub

新博客地址:voidy's blog

玩转Vim-札记(一)

Posted on 2015-04-17 14:55  尛鱼  阅读(1599)  评论(4编辑  收藏  举报

玩转Vim-札记(一)

  简介

  在这个蔚蓝色的星球上,流传着两大神器的传说:据说Emacs是神的编辑器,而Vim是编辑器之神。一些人勇敢地拾起了Vim或Emacs,却发现学习曲线陡峭而漫长,还是有一些人留下来了,坚定地守护着这两大神器。一些说葡萄太酸的人想离开又不甘心,总是问:它们到底神在哪里啊?不过在此我只介绍传说中的编辑器之神-Vim。Vim是Vi最受欢迎的变种之一,除了继承了Vi迅捷的编辑方式, Vim的功能已经比原始的Vi强大得多。这也得益于它可以用Vim脚本无限地扩展。 Vim.org 上已经有数千个脚本了,给Vim增加各种各样的特性和功能。而且它的设计更符合Unix传统,它通过管道机制和系统内各种积木工具打交道,它讲究的是和系统内的工具程序协作来完成用户的任务。除此之外,它的定位也相当明确,就是做一个强大的编辑器,因此它的绝大部分扩展,都是为了更好的完成编辑文本的任务。Vim的前身Vi的作者Bill Joy和Emacs的作者Richard Stallman 都是那个时代著名的黑客,所以这两款编辑器一开始面向的主要用户就是写程序的人,现在仍然是。它们对编程加入了越来越多的支持,如语法高亮、智能缩进、关键字补全甚至集成调试。

初窥门径

  要想玩嘛,首先需要先安装一个Vim再说咯。由于我的开发一般都是在CentOS上进行的,所以就说下它的安装吧。其实也就是一行命令的事儿了:

1 [root@voidy ~]# yum install vim
2 Loaded plugins: fastestmirror
3 Setting up Install Process
4 Loading mirror speeds from cached hostfile
5 epel/metalink                                                                                                 | 4.3 kB     00:00    

  至此vim安装结束,现在先不要进行任何操作,先接着往下看:

1 [root@voidy site-packages]# vim site.py

  然后就会看到如下的界面:

1 def __boot():
2     import sys, imp, os, os.path
3     PYTHONPATH = os.environ.get('PYTHONPATH')

   此时进入了所谓的常规模式(Normal Mode),既然提到了模式这个概念,那么就详细的说下Vim的两种模式吧。

  常规模式(Normal Mode)与插入模式(Insert Mode):

  常规模式:可以进行编辑,对已存在的文字进行一些操作,包括:复制,剪切,移动,修改,删除,格式化等等。

  插入模式:也就是传说中的输入了。

  而大部分的编辑器都只有一种模式,以上两部分的操作合并在一起进行,这就是为什么会有菜单和按钮的原因,而对于文字的范围选择也需要额外的方法来辅助,比如快捷键和鼠标操作等。无论是什么样的情况我们都不得不迫使大脑在思考(输入)和寻找(编辑)中不停转换,即使你不在意这一点,始终有一些操作你是无法流水化的。比如说:在光标随意停留在某处的时候,你能闭着眼睛用鼠标点击到某个功能吗?Vim 就可以。换言之一旦你掌握了 Vim之后,所有的操作——强调一遍:所有的操作都可以不用寻找,不用鼠标等工具辅助,你可以全副身心投入在你的主要目标上。

  那么问题来了,如何在两种模式间进行切换呢?

  其实很简单的。进入文件之后直接就是常规模式,那么从常规模式进入到插入模式只需要从以下几个命令选择一个即可:

1 i:在当前字符的左边插入
2 I:在当前行首插入
3 a:在当前字符的右边插入
4 A:在当前行尾插入
5 o:在当前行下面插入一个新行
6 O:在当前行上面插入一个新行

   那么如何从插入模式进到常规模式,最常见的有三种:

  1. 使用 ESC 键:这是最通用的方法,它唯一的缺点就是距离标准键位较远,然而由于它的位置在左上角,所以你也可以做一些强化练习来准确的找到它。记住:不要看键盘去找,要形成肌肉记忆!也有很多人偏好修改 ESC 键位,比如说把它转移到 CapsLock,即大写锁定键上去,这是可取的,并且也十分有效,然而我不推荐这么做。因为修改键位相对来说麻烦一些,在某些场景会让你颇感不便。比如说你去客户那里安装服务器,遇到的几乎都是标准键盘,不光是在 Vim 下让你难受,其他的地方也是如此,因为 ESC 太常用了,而且没有第二替代键。

  2. 使用 Ctrl-[ 组合键:它的功能和 ESC 完全等价,只是组合键稍微困难一些。这里的窍门是 Ctrl 键的位置,我会把它重新映射到 CapsLock 键上去。这样一来两手的小指稍微移动就可以完成,稍加训练即可熟练掌握。这也是我不推荐 ESC 的第二个原因,至于之前提到过的键位映射带来的后遗症,不要紧,键盘上都有不止一个的 Ctrl 键,你根本无需调整键位。

  3. 使用 Ctrl-c 组合键:看起来它似乎比 Ctrl-[ 更容易一些,但是它们的含义有很大的差别。在终端下 Ctrl-c 的意思是“中断”,基本上它会中止所有正在运行的命令,当然它也可以在 Vim 里带我们中断一切操作返回默认的常规模式。但是 Vim 有一些操作其实是依赖正常的返回方法的,也就是 ESC 或者 Ctrl-[,使用 Ctrl-c 会导致这样的功能无法被有效触发(有不少插件依赖这些触发功能,所以要小心莫名其妙的问题)。总而言之这是最不推荐的方法,除非你心里很有数,并且能在正确的时候使用前面两种方法。

  好的,模式的介绍就此打住,在真正玩之前,特别建议要学会VIm的移动指令:Vim 的基本移动就是 h j k l 这四个键,分别代表    

1 h    光标左移    
2 j    光标下移    
3 k    光标上移    
4 l    光标右移    

  很特别是吗?好吧,我承认是很古怪。然而你必须要习惯它们,并且永远不要更改它们的键位!这样你就可以没有小键盘的情况下也可以快速的移动,当然,最主要的是你还可以手指不用怎么大幅度的移动。至于为什么要这么设计?好像键盘都是这么设计的吧。不信的话戳这里。

  很不好记,很难练是么?不想练习是么?没事,下面给你四个有趣的东西,相信你会不知不觉爱上这些方向键的:

  1. Vim Adventures 这是一款在线游戏,玩法超级简单,控制键都是 Vim 的移动指令。你所要做的就是把键盘当成手柄,移动一个阴影来寻找字母、人物、宝藏、钥匙等等。如果你无法过关也没有关系,重要的是控制方向这个环节能够把它练习到无需思考且不会犯错就可以了。
  2. Vim Snake 如果你觉得上一个游戏有点难,因为无法过关让你有挫折感的话,这个游戏就简单多了——贪吃蛇,谁不会玩?只不过你只能用 h j k l 来控制方向而已。注意,只有在插入模式(i)才能吃到东西,只有在常规模式(ESC)才能移动方向。完整的流程如下:移动 -> 对准目标 -> 按下 i 直到吃到目标 -> 迅速按下 ESC -> 移动。关于模式,我们下次解释。
  3. Open Vim Tutorials 如果以上两款游戏都让你为难的话(喂,你不是吧?!),那么这就是你的救星啦。请直接跳到第三章练习四方向移动,等到开始习惯这种感觉了再继续挑战游戏。
  4. Vim Genius 这也是好东西,它比上一个更贴近 Vim 的哲学。它不让你看到要按哪个键,而是给你文字提示让你盲打对应的键,其好处是锻炼自己的肌肉记忆和条件反射思维。然而它比较依靠你的自控能力与耐心,另外英文不好也会有点拖累。

  至此,Vim的大门已经打开,此次介绍也就到此结束了。

  以上。Enjoy Vim!

 

PS:本博客欢迎转发,但请注明博客地址及作者,因本人水平有限,若有不对之处,欢迎指出,谢谢~

  博客地址:http://www.cnblogs.com/voidy/

  博客新址:http://voidy.net

  <。)#)))≦