vim的模式及转换关系如图1所示。简单介绍一下命令模式和扩展模式的常用命令。
图1
命令模式
字符间跳转:
h:左l: 右j: 下k: 上
#COMMAND:跳转由#指定的个数的字符
单词间跳转:
w:下一个单词的词首
e:当前或下一单词的词尾
b:当前或前一个单词的词首
#COMMAND:由#指定一次跳转的单词数
当前页跳转:
H:页首M:页中间行L:页底
行首行尾跳转:
^: 跳转至行首的第一个非空白字符
0: 跳转至行首
$: 跳转至行尾
行间移动:
#G、扩展模式:# :跳转至由#指定行
G:最后一行
1G,gg: 第一行
句间移动:
):下一句(:上一句
段落间移动:
}:下一段{:上一段
Ctrl+f: 向文件尾部翻一屏
Ctrl+b: 向文件首部翻一屏
Ctrl+d: 向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
转插入模式:
i: insert,在光标所在处输入
I:在当前光标所在行的行首输入
a: append,在光标所在处后面输入
A:在当前光标所在行的行尾输入
o: 在当前光标所在行的下方打开一个新行
O:在当前光标所在行的上方打开一个新行
字符删除
x: 删除光标处的字符
#x: 删除光标处起始的#个字符
xp: 交换光标所在处的字符及其后面字符的位置
~:转换大小写
J:删除当前行后的换行符
替换命令(r,replace)
r: 替换光标所在处的字符
R:切换成REPLACE模式
删除命令
d$: 删除到行尾
d^:删除到非空行首
d0:删除到行首
dd: 删除光标所在的行
#dd:多行删除
D:从当前光标位置一直删除到行尾,留空行,等同于d$
复制命令
y :复制,行为相似于d命令
y$:复制到行尾
y0:复制到行首(包括空白字符)
y^:复制到行首(不包括空白字符ye:复制到当前或下一个单词的词尾
yw:复制到下一个单词词首
#yy:复制多行
粘贴命令
p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否
则,则粘贴至当前光标所在处的后面
P:缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,
则粘贴至当前光标所在处的前面
撤销更改
u撤销最近的更改
#u撤销之前多次更改
U撤消光标落在这行后所有此行的更改
按Ctrl-r重做最后的“撤消”更改
. :重复前一个操作
n. :重复前一个操作n次
扩展模式
地址定界
# 具体第#行,例如2表示第2行
#,# 从左侧#表示起始行,到右侧#表示结尾行
从左侧#表示的起始行,加上右侧#表示的行数
:2,+3 表示2到5行
. 当前行
$ 最后一行
.,$-1 当前行到倒数第二行
% 全文,相当于1,$
查找
/PATTERN:从当前光标所在处向文件尾部查找
?PATTERN:从当前光标所在处向文件首部查找
n:与命令同方向
N:与命令反方向
s: 在扩展模式下完成查找替换操作
要查找的内容:可使用模式
替换为的内容:不能使用模式,但可以使用\1,\2,...等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容
修饰符:
i: 忽略大小写
g:全局替换;默认情况下,每一行只替换第一次出现
gc:全局替换,每次替换前询问