vim有好几种模式,这样带来的好处就是能够使用很简捷的按键完成复杂的功能。vim模式有下面几种:
1.普通模式,这是刚打开vim后进入的模式,大部分光标移动,删除,复制等等操作都是在这个模式下完成的,这时候的按键基本上都被安排了特定的功能,不会输入到编辑的内容当中,在编辑模式下按ESC可以进入普通模式。
2.编辑模式,这个时候的vim基本就只能充当txt记事本的功能了,除了方向键,一些Ctrl引导的功能键以外,大部分按键的命令功能失效。在普通模式下,按i,a....等等一些插入命令可以进入编辑模式。
3.命令模式,普通模式下按冒号(:)进入Command-Line模式,可以输入各种命令。
没有特别说明的话,都是指在普通模式下。
光标移动
k
h l
j
vim里面的许多命令都可以和数字结合,表示重复执行该命令。如:8h,表示向上移动8行,3l,表示向右移动一个字符,这个真的可以举一反三。
0表示移动到行首,$表示移动到行尾。
另外一个移动到行首的命令是 ^,不过这个是移动到第一个非空字符,比较有用。
gg 移动到文档的起始,G 移动到文档末尾。
移动到第n行,nG 或者在命令模式下直接输入行号
+ 移动到下一行的第一个字符 - 移动到上一行的第一个字符
e 移动到下一个单词的结尾 w 移动到下一个单词的开始 b 到上一个单词的开始
ctrl-f 向前移动一个屏幕 ctrl-b 向后移动一个屏幕
ctrl-u 向上移动装修屏幕 ctrl-d 向下移动半个屏幕
z enter 将当前行放在屏幕顶端
z. 将当前行放在屏幕中间
z- 将当前行放在屏幕底端
H 光标移到屏幕顶端
M 光标移动到屏幕中间
L 光标移动到屏幕底端
nH 光标移动到屏幕顶端向下数第n行
nL 光标移动到屏幕底端向上数第n行
( 移动到当前句子的开头
) 移动到下一个句子的开头
{ 移动到当前这一段的开头
} 移动到下一段的开头
]] 移动到这一节的开头
[[ 移动到下一节的开头
`` 可以移动到跳转前的位置。
还有一个非常强大的行内跳转功能:
f char 表示跳转到本行内光标后的第一个char字符。F表示跳转到本行内光标前的第一个char字符。
; 重复上一个搜索命令,方向相同
, 重复上一个搜索命令,方向相反
这个命令也可以加上数字操作,如3fe,表示移动到字符e第3次出现的位置。