基本上vi分为三种模式:一般命令模式、编辑模式、命令行模式。
以下是常见按键说明:
1.一般命令模式按键说明
包括光标移动、复制粘贴、查找替换等
1.1移动光标
h或向左箭头 | 光标向左移动一个字符 |
---|---|
j或向下箭头 | 光标向下移动一个字符 |
k或向上箭头 | 光标向上移动一个字符 |
l或向右箭头 | 光标向右移动一个字符 |
左右箭头就是方向键的上下左右,其实你会发现h、j、k、l是在键盘上排列在一起的,比如说,你要向下移动30行,就可以使用“30j”的组合按键,亦即加上想要进行的数字后,按下操作即可。
[ctrl]+[f] | 屏幕向下移动一页 |
---|---|
[ctrl]+[b] | 屏幕向上移动一页 |
[ctrl]+[d] | 屏幕向下移动半页 |
[ctrl]+[u] | 屏幕向上移动半页 |
+ | 光标移动到非空格符的下一行 |
- | 光标移动到非空格的上一行 |
n [space] | n表示数字 后按下空格键 光标向后移动n个字符距离 |
0(是ling不是o)或功能键[home] | 移动到这一行最前面的字符处(常用) |
$或功能键[end] | 移动到这一行最后面字符(常用) |
H | 光标移动到这个屏幕最上方那一行的第一个字符 |
M | 光标移动到这个屏幕最中央那一行的第一个字符 |
L | 光标移动到这个屏幕最下方那一行的第一个字符 |
G | 光标移动到这个文件的最后一行(常用) |
nG | 移动到这个文件的第n行 |
gg | 移动到这个文件的第一行,相当于1G |
n[enter] | n为数字,光标向下移动n行 |
1.2查找与替换
/word | 光标向下寻找一个名称为word的字符串(常用) |
---|---|
?word | 光标向上寻找一个字称为word的字符串 |
n | n为英文按键,代表重复前一个查找的操作。 |
N | 英文按键,为反向进行前一个查找动作 |
:n1,n2s/word/word2/g | n1,n2为数字,即在n1,n2行之间寻找word1这个字符串,并替换成/word2 |
?1,$s/word1/word2/g | 从1行到最后一行寻找word1字符串并替换为word2(常用) |
:1,$s/word1/word2/gc | 同上,不过在替换前显示提示字符给用户确认是否需要替换(常用) |
1.3 删除、复制与粘贴
x与X | 在一行中,x为向后删除一个字符,X向后删除一个字符(常用) |
---|---|
nx | n为数字,连续向后删除n个字符 |
dd | 删除(剪切)光标所在的一整行(常用) |
ndd | n位数字,删除(剪切)光标所在的向下n行(常用) |
d1G | 删除(剪切)光标所在到第一行的全部数据 |
dG | 删除(剪切)光标所在到最后一行的全部数据 |
d$ | 删除(剪切)光标所在处,到该行的最后一个字符 |
d0 | 删除(剪切)光标所在处,到该行的最前面一个字符 |
yy | 复制光标所在的那一行(常用) |
nyy | 复制光标所在的向下n行 (常用) |
y1G | 复制光标所在行到第一行的全部数据 |
yG | 复制光标所在行到最后一行的全部数据 |
y0 | 复制光标所在字符到该行行首的所有数据 |
y$ | 复制光标所在字符到该行行尾的所有数据 |
p与P | P为将已复制的数据在光标下一行粘贴,P是在上一行 (常用) |
J | 将光标所在行与下一行的数据结合成同一行 |
c | 重复删除多个数据,例如向下删除10行:10cj |
u | 恢复前一个操作(常用) |
[ctrl]+r | 重做上一个操作(常用) |
. | 这个就是小数点,重复前个操作(常用) |
u配合[ctrl]+r是很常用的命令,一个是恢复,另一个则是重做一次,鸟哥说利用这两个功能按键,你的编辑,emmm,会很快乐。可以试试,快乐预定中。(我已经快乐疯了,我能玩一天)
2.一般命令模式切换到编辑模式按键说明
进入插入【insert】或替换【replace】的编辑模式,以下都很常用:
i与I | 进入插入模式 i:目前光标插入 I:目前所在行第一个非空格符处插入 |
---|---|
a与A | 进入插入模式 a:目前光标所在的下一个字符插入A:所在行最后一个字符插入 |
o与O | 进入插入模式 o:光标下一行插入新的一行O:光标上一行插入新的一行 |
r与R | 进入替换模式r:只替换光标所在的字符一次R:一直替换 知道[esc] |
[esc] | 退出编辑模式 |
3.一般命令模式切换到命令行模式按键说明
此中"!"一般表示强制的意思
:w | 将编辑的数据写入硬盘文件 |
---|---|
:w! | 若文件只读时,强制写入文件,不过不一定成功,还得看你对文件的权限 |
:q | 退出vi(常用) |
:q! | 若修改过文件,又不想保存时的提裤子行为,意思是强制退出不保存 |
:wq | 保存后退出,若为:wq!则为强制保存后退出 |
ZZ | 若文件没有修改,则退出,修改则保存后退出 |
:w[filename] | 在将编辑的数据保存成另一个文件 |
:r[filename] | 在编辑的数据中,读入另一个文件的数据,即将文件内容插入到所在行后面 |
:n1,n2 w[filename] | 将n1到n2行的内容保存为filename这个文件 |
:!command | 暂时退出vi到命令行模式下执行command的显示结果 |
:set nu | 显示行号,设置之后,会在每一行的前缀显示该行的行号 |
:set nonu | 与set nu相反,为取消行号 |
举个栗子::! ls /home 即可在vi当中查看home下面ls输出的内容