一、一般模式
移动:
0/home : 移动到当前行首
$/end : 移动到当前行尾
G:移动到文件最后一行
nG: 移动到第n行,例如30G 即是移动到第30行
gg :移动到文件的首行
n[enter] : 输入数字n,然后按enter,光标向下移动n行
查找:
/word 向下寻找word,例如要查找log 输入/log即可
?word 向上寻找word
n:/ 时向下,?时向上查找
N:同n相反
:n1,n2s/word1/word2/g : 将n1到n2之间的word1替换为word2。例如:
:100,200s/error/warn/g 将100到200行间把error替换为warn
:1,$s/word1/word2/g : 将第一行到最后一行的word1替换为word2
g后加c在替换前会进行确认提示,/gc
删除、复制、黏贴
x,X : x向后删除,X向前删除
nx : 向后删除n个字符,X同理
dd :删除光标所在行
ndd : 删除光标所在行的向下n行
d$ : 删除从光标所在处到该行的最后一个字符
d0 : 删除从光标所在处到该行的第一个字符
yy : 复制光标所在行
nyy : 复制光标所在的向下n行
p,P : p将已复制内容在光标下一行黏贴,P黏贴上一行
u :复原前一个操作
ctrl + r : 重做上一个操作
. : 重复前一个操作
二、编辑模式
i,I : i 当前光标处插入,I 当前行的第一个非空格处插入
a,A : a 光标所在的下一个字符开始插入,A 光标所在行的最后一个字符开始插入
o,O : o 光标所在行的下一行插入新的一行,O相反
r,R : r 替换光标所在字符一次,R一直替换,直到按ESC
三、命令模式
:q : 退出
:q! : 强制退出
:w : 保存
:w! : 强制保存
:wq : 保存并退出
:! command : 暂时离开vi到命令行模式下执行command的显示结果。如:
:! ls /home 即可在vi中查看home下ls输出的信息
:set nu 显示行号
四、块选择
v,V : v 字符选择,光标经过的地方反白选择;V 行选择,光标经过的行反白
ctrl + v :列选择,光标经过的列和字符反白
y :复制反白的地方
d :删除反白
五、多窗口
:sp [filename] :打开一个新窗口,如果加 filename,表示在新窗口打开一个新文件,否则表示两个窗口为同一个文件内容
ctrl + w + j/↓ : ctrl + w 放开,然后按j 光标移动到下一个窗口
ctrl + w + k/↑ : ctrl + w 放开,然后按k 光标移动到上一个窗口
ctrl + w + q : 退出所在窗口