要做个Linuxer,VIM的操作是必须就跟手指头盲打键盘那么熟练。

首先说下Vim的两种最常用模式,这是对菜鸟说的:),普通模式和输入模式,在普通模式下所有的按键都是命令,在输入模式下
可以输入字符。

在刚用vi打开文档时,都是普通模式,本文就介绍如何快速记住一些最基本的操作命令。

先讲讲在普通模式下的光标移动。

当你的打字速度到达一定境界时,比如我:),我非常不喜欢把手移到小键盘或者方向键那里去,因为那个地方操作起来太慢严重影响我心情有木有,所以VIM就是为高效的人设计的,它充分认识到这一点,在VIM里上下左右风别被 j k h l 代替,

h:在最左边,当然是左移动啦!
l:同理,在最右边,右移动!
j:当刚打开一个文件,是不是一般都在开头,要往下移动啊!标准指法里右手食指在J上,用的最频繁,因此就用J来往下移咯!
k:有下移动当然得下移动,就在J旁边吧,多好记!
但是每次只移动一个,好麻烦!
如果我要往下移动五行,按五次不是要累死我,而且磨损键盘!
高效的VIM当然已经解决问题,
在hjkl前加数字,比如3j就是向下移动三行,3l即使向右三行啦!

但是虽然hjkl移动很方便,但是只能逐个字符移动,好不爽,我想一个一个单词的移动,
w 可以解决,你用w就可以很方便的每次移动单词,
怎么记住这个快捷键呢,w就是word的缩写啊,亲!
w是向右移动一个单词,想移动多个单词,和上面一样加个数字就可以来,3w向右移动三个单词。
能向右移还得向左移动啊,b可以解决这个问题,b是back的缩写,后退一个单词嘛!3b的意思你懂的。
随便这里提下,w在移动过程中是每次光标都停留在单词的首字符,想让光标在移动中停留在尾字符或者
在一个单词中想跳到单词的尾字符,用“e”,end嘛

简单的移动掌握上面几个键就可以了,当然还得知道有时候我想快速移动到一行的开头和结尾怎么办呢,
数字“0”,第0个字符的意思,就可以将光标移到一行开头处,符号“$”,就是美元的符号,移动到行尾。

移动先介绍这么几个常用的,再讲讲文本操作

对文本的操作,当要求不怎么高时,无非就是插入文字,修改文字,删除文字,或者复制剪切粘贴这么几种。

插入文字,因为是insert,快捷键就是“i”,但是用你想在一行末尾插入的时候,用i就蛋疼了,因为i是在光标
前面插入字符,所以末尾插入字符就等于在倒数第二个字符的地方插入了!这时候要用”a“,a和i的功能完全一样,
add的缩写,增加的意思,在光标的后面插入字符。
有时候,特别是敲代码的时候,我们要另起一行对吧,在上一行的任意位置按“o”,open new line ,哈哈,你已经在
新的一行插入文字咯

修改文字,change,快捷键“c”,不过在普通模式下你按一个c没反应,为啥?你还没告诉VIM你要修改的对象呢,
光标停在那里,我是修改这个单词呢,还是要修改一整行呢。
cw,w是移动一个单词的快捷键,cw的意思就是对光标当前所在出到这个单词的结尾修改,cb的意思我就不说了。
那c2b呢?,嘿嘿,从光标往前两个单词修改!
c0,c$,分别是光标到本行开头和结尾的所有文本修改。

发现奥妙了吧,移动命令和文本操作命令可以搭配起来用有木有,这正是VIM最强大的地方,各个命令可以组合使用。
其实我们可以这么考虑,在移动命令中,如果按照word里边按住shift的思维,移动是不是就等于选中?移动的轨迹就是
文本的选择对象!所以在vim里一般的命令格式为
(command)(number)(text object)
command就是对文本的操作,“c”是修改,“d”是删除,“y”是复制等,number + text object 组合起来就是命令
所要操作的文本对象啦!
比如d2h,d是删除,2h是往左两个字符,那d2h就是删除光标左边的两个字符咯!
举一反三,各种组合等你实际应用中再用吧。

现在比如我有一个单词,love,不小心写成了loce,要把c改成v,如果我们用命令“c”的话,我们需要先定位到e,然后
c1h,改一个字符用得着这么麻烦嘛?当然不用,把光标移动到”c”上,输入rv即可!r是replace,也是替换对吧,他的功能就是
替换一个字符,在r后面跟着的v就是新文本。很方便对不,~~~……
对应删除d,要删除一个字符,用x就可以了! x就是小学老师给我们打的大叉叉么,嘿嘿。

有时候我们不小心手贱,安了一个x,想撤销怎么办?
vim当然已经给我们考虑好了,你按“u”,u即是undo,就跟word一样,多次按u就是撤销多次哦~

插入修改删除我们都会了,下面我们来讲怎么剪切复制粘贴呢?
这时候我们要用到“p”命令,p就是place嘛,放置的意思。
前面我们说了删除命令“d”和“x”,其实删除就是剪切嘛,这些被删除的文本会被放到缓冲区中,
”p“命令会将缓冲区的中文本加入到当前光标的后面,如果我们用了d3j删除了3行,对于多行的文本,
p会放置在当前光标的下一新行。
对于x,有个妙用,还是用love这个单词吧,如果我输入成了loev,那我只要把光标移动到“e”上,然后xp就搞定了!
呵呵,x先把当前字符给删除了,这时候光标在“v”,然后我们用p把“e”放到“v”后面,就完成两个字符的对掉啦。
剪切粘贴你也会了,复制怎么办呢,用”y“,比如yw,复制了一个单词,到想要放置的地方,p就好啦。

还得介绍几个非常规的组合。
cc,c更改,两个c算啥?两个c代表更改一整行
dd,删除一整行,
yy,复制一整行

VIM 是对命令的大小写敏感的,上面介绍的全是最基本的小写指令,下面来看看那大写命令的快捷之处!

想到本行的开头插入吗?用“I”
想到本行的末尾插入吗?用“A“
想在本行的上一行新开一行写代码吗?用“O”
想把剪切后者复制的文本放在光标之前吗?用“P“
想在移动过程中撇开那些烦人的标点嘛?用“W”,“B”,“E”

C是c$的缩写,即是从当前光标到本行末尾的所有文本更改
D是d$的简写

现在我有两行句子:

I love you ,please
come back.

上述两个句子应该在同一行对吧,我不用吧光标移动到第二行,然后按i进入插入模式,然后再来个退格键。
我只需吧光标移到第一句,用一个”J“就搞定了~

在英文中每个句子的开头第一个字母要大写对吧,万一我当时没大写然后我要改呢,传统做法,把光标移动上去,
然后rA,文艺青年,把光标移动到上面,用“~”搞定,这个符号在“1”的左边,按住shift键。

再介绍一个有用的命令,“.”,就是句号,vim会记住你上次操作是什么,然后用“.”就可以重复执行上次命令!

学完上述这些基本操作,就可以在黑乎乎的屏幕上装逼一把啦~!
当然vim的功能远远超过这些。

一个一个字的打出来的,真心累,输入法 又不给力。。。

转自 http://cryinstall.com/?p=104