一般模式
h:光标向左移动一个字符
j:光标向右移动一个字符
k:光标向上移动一个字符
l:光标向下移动一个字符(小写L)
如果想要多次移动,例如向下移动30行,可使用30j即可
[ctrl]+f:屏幕向下移动一页
[ctrl]+b:屏幕向上移动一页
[ctrl]+u:屏幕向上移动半页
[ctrl]+d:屏幕向下移动半页
0:移动到光标所在行的最前面字符处(数字0)(此时光标指向第一个字符)
$:移动到这一行的最后一个字符处(此时光标指向最后一个字符)
H:光标移动到这个屏幕的最上方那一行的第一个字符
M:光标移动到这个屏幕中央那一行的第一个字符
L:光标移动到这个屏幕最下方那一行的第一个字符
G:移动到这个文件的最后一行
nG:移动到这个文件 的第n行。20G,移动到第20行。通过:set nu可显示文件的行数
gg:移动文件的第一行,同1G
执行与替换
/word:向下搜索word
?word:向上搜索word
n:重复前一个搜索动作。比如/word时。按n向下搜索下一处word
N:与n相反
:n1,n2s/word/replace/g:n1与n2数字.在第n1和n2行中搜索word这个字符串,并替换成replace。例在100到200行之间替换:100,200s/word/replace/g
:1,$s/word/repalce/g:从第一行到最后一行替换字符串word
:1,$s/word/replace/gc:从第一行到最后一行替换字符串word为replace。每次替换前需要确认
:e!:刷新当前文件
删除,复制与粘贴
x,X:在一行字当中,x为向后删除一个字符,X为向前删除一个字符
nx:n为数字,连续删除n个字符
dd:删除游标所在那一行
ndd:n为数字,删除光标向下的n行
d1G:删除光标所在到第一行的所有数据
dG:删除光标所在到最后一行的所有数据
d$:删除游标所在处到该行的最后一个字符
d0:删除游标所在处到该行的最前面一个的字符
例子:
jobConfig=org.mule.transport.quartz.jobs.EventGeneratorJobConfig@12415d18 游标在transport中的p处
d$删除:jobConfig=org.mule.trans
d0删除:port.quartz.jobs.EventGeneratorJobConfig@12415d18
yy:复制游标所在的那一行
nyy:n为数字,复制光标所在的向下n列
y1G:复制光标所在行到第一行所有数据
yG:复制光标所在的行到最一行所有数据
y0:复制沅标所在的那个字符到该行行首的所有数据
y$:复制光标所在的那个字符到该行行尾的所有数据
p,P:p将已经复制的数据在光标的下一行贴上,P则为贴在上一行
J:将光标所在行与下一行的数据结合成一行
u:复原前一个动作
[ctrl]+r:重做前一个动作
编辑模式和一般模式切换
i,I:进入Insert模式,i从光标所在处写入,I目前所在行的第一个非空格处写入
a,A:进入Insert模式,a从目前光标所在的下一个字符处开始写入,A从光标所在的行的最后一个字符处开始写入
o,O:进入Insert模式,o在目前光标所在的下一行处写入,O光标所在的上一行处写入
r,R:进入replace模式,r取代光标的那一个字符一次,R会一直取代光标所在的文字,直到[ESC]
[ESC]:退出编辑模式
一般模式功换到命令模式
:w:将编辑的数据写入文件
:w!:若文件为只读时,强制写入。需要拥有写入的权限
:q:离开vi
:q!:若修改过文件,不想储存,使用!强制离开
:wq:储存后离开
ZZ:若文件没有更动,则不储存离开,若文件有更动,则储存离开
:w [filename]:交编辑的数据写入到filename文件中
:r [filename]:在编辑的数据中,读入另一个文件 的数据。即将[filename]这个文件内容加到游标所在行后面
:n1,n2 w [filename]:将n1到n2的内容储存到filename文件中
:! command:暂时离开vi到指令列模式执行command。如:! ls /home 即可以vi当中察看/home下的ls输出
:set nu:显示行号
:set nonu:取消行号
摘自:鸟哥学linux