说明:笔记内容与原手册编排顺序并不相同,完全是按照个人组织,对VIM的常用操作做一个整体上的归纳,很多细节部分很难详细涉及到,如有不解之处,请移至官方数据手册http://vimdoc.sf.net。
注意涉及到指令部分,都会用不同颜色加以区分开来,且所有指令都是用 Courier New 字体,举例如下:
(1)终端指令:
vim filename
(2)命令行模式(Command-line Mode)指令:
:set showmode
(3)普通模式(Normal Mode)指令:
"*yy
其中(2)(3)指令只有在打开VIM的时候才能生效。另外还有一点需要注意的是,指令区分大小写!当需要用到辅助键的时候,均用大写表示,如CTRL-W,表示按住Ctrl键和w键(这个w直接按住就可以,不要配合Shift键按下)
指令中由中括号括起来的部分为可选部分
==========================================分割线==========================================
一、如何获取帮助
这个很关键,VIM的指令众多,哪怕是记住其中的几成也是相当困难的一件事情,因此首先要学会使用帮助手册,这一部分跳过,之所以列在这里只是希望引起足够的重视,常用帮助手册使用方法请参考官方User Manual 02.8 How to get help
:help 02.8
详细使用方法使用指令
:help :help
二、移动和滚动
1. 全局移动操作:
h, j, k, l分别对应上下左右,这四个按键适用于所有的移动操作
2. 光标移动操作:
(1)w, b, W, B
w 移动到下一个word的开头,b 上一次word,W 下一个WORD开头,B 上一个WORD
(2)e, ge, E, gE
e 移动到下一个word的结尾, ge 上一次word,E 下一个WORD结尾,gE 上一个WORD
(3)f, F, t, T
需要配合单一字符使用,且只能在光标所在行有效,f 移动到下一个指定字符,F 上一个指定字符,t 移动到下一个指定字符的前一个字符,T 移动到上一次指定字符的后一个字符。
(4)0, ^, $
0 移动到行的最开头,^ 移动到行第一个非空字符处,$ 移动到行末
其中(1)(2)(3)可以配合数字键使用,表示移动相应的单元长度,操作为{number}{command}。另外(1)(2)可跨行移动。
说明:word和WORD为不同概念,默认情况下word包括字母、数字、下划线和可打印的拉丁字符,而WORD是由空格分开的所有非空字符。word定义的范围可通过 iskeyword 选项来查看,指令
:set iskeyword
会打印出默认范围是 iskeyword=@,48−57,_,192−255,@代表所有字母,48-57是数字0-9,192-255是可打印的拉丁字符。该范围可自行修改,如
:set iskeyword+=-
:set iskeyword-=-
分别将 - 字符加入到word范围或是从该范围中删除。
3. 文本移动操作:
文本移动其实是一个复合操作,包括文本的剪切和拷贝,然后再粘贴。
(1)剪切(x, X, d, D, dd)
x 删除光标下的一个字符,X 删除光标前的字符,d 删除操作,不可单独使用,需要配合motion,D 删除光标至行末,dd 删除整行。
(2)复制(y, Y, yy)
y 复制操作,不可单独使用,需要配合motion,Y 复制整行,yy 同 Y。
(3)粘贴(p, P)
p 粘贴文本在光标后,P 在光标前
(4)连接行(J)
J 将两行连接在一起
以上操作均可在前面配合数字使用。
(5)其他操作说明:
operator-motion(操作符与动作)
对于 d 和 y 这样不能单独使用,需要配合motion(表示移动的指令)来说的指令,称之为operator(操作符),这种模式叫operator-motion pattern,所有的operator(操作符)都必须配合motion来使用,其相应功能影响的范围就是从当前光标处开始到 motion 到达的地方,另外这个模式也可以配合数字使用,类似于形式
[number]{operator}[number]{motion}
Text object(文本对象)
我们经常碰到需要选中整个单词或者句子而不受光标所在位置的影响时,文本对象就起到作用了,它的影响范围是光标所在的整个单词或者整个句子等等。文本对象通过 a 或者 i 加上对象来选中,比如 aw 表示光标所处单词,as 表示光标所处句子,i 和 a 的区别在于 a 会选中对象旁边的空白字符,而 i 则只选中对象