1.命令模式:直接vi filename刚进入的模式就是命令模式
2.底行模式:在命令模式按esc输入 : 或/ 或? 到达的模式就是底行模式.在底行模式按回车键回到命令模式
3.编辑模式:在命令模式按i a o任意一个进入的模式是编辑模式,在编辑模式按esc退回到命令模式
打开文件
vi filename:新建文件打开或打开已有文件,光标停在首行
vi +n filename :打开文件 ,光标停留在第n行
vi -r filename:在上次使用vi编辑文件时发生系统崩溃,恢复文件
底行模式命令
:w:保存当前编辑内容
:wq:保存并退出vi编辑器
:q: 退出vi编辑器,如果文件已经更改未保存,则无法退出
:q!:强制退出不保存
:w!:强制保存
:w filename :文件另存为一个新文件
w >>filename:把文件追加到另外一个文件
:set nu 显示行号。 底行模式的命令。
:set nonu 不显示行号。 底行模式的命令。
:1,2co3 拷贝1,2行在3行之后 底行模式的命令。
:4,5m6 移动行4行5在行6之后。 底行模式的命令。
:20 光标停留再第20行。 底行模式的命令。
vi底行模式下替换内容
语法: :首行数,末行数s/要替换的字符串/替换的字符串/g 注意: 不加g只替换每行的一个要替换的字符串,后面的不会替换。 在s前面加上'%'可以实现全文范围内替换。 1.将文件中所有的boy替换成girl :1,$s/boy/girl/g 或者 :%s/boy/girl/g 2.将文件中第一行的第一个boy 替换成girl :1,1s/boy/girl/ 或者:s/boy/girl/ 替换当前行的第一个内容 3.将文件中第一行的第一个boy 替换成girl :1,1s/boy/girl/g 或者:s/boy/girl/g 替换当前行的所有查找到的内容 4.将文件中第2行至第5行的boy 替换成girl :1,5s/boy/girl/g 5.将文件中第2行至尾行的boy 替换成girl :1,$s/boy/girl/g 6.指定只在当前行至文件结尾间进行替换,把boy 替换成girl : .,$s/boy/girl/g 点. 表示当前行 7.指定只在后续9行内进行替换,把boy 替换成girl :.,.+8s/boy/girl/g 8.语法总结 :s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vivian/sky/g 替换当前行所有 vivian 为 sky :n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky :n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky n 为数字,若 n 为 .,表示从当前行开始到最后一行 :%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky :%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky
命令模式
a:在当前的右侧插入数据
dd:删除一行数据
dw:删除一个单词
5dd删除当前和下面的加起来5行
D:从光标处删除到行尾
ndw:删除n个字符
1,100d:从第一行删除到第100行,底行命令模式
x:光标处删除一直到按下esc键。
r:替换一个字符
yy:复制一行
p:粘贴
i :在光标处插入内容
I :在当前行首
a:在光标后插入内容
A:在当前行尾
o:在当前行之下插入内容
O:在当前行之上新开一行
r:替换当前字符
R:替换当前字符及其后的字符,直至按ESC键
s:从当前光标位置处开始,以输入的文本替代指定数目的字符 例:5s
S:替换光标所在的行
c:清除一个字符
cw:清除一个单词
J:把当前行和下一行连起来
u:撤销上一步操作
查找内容
底行模式下输入 /内容,按回车键
/pattern 从当行往下查找匹配字符 底行模式的命令
?pattern 从当前往上查找匹配字符 底行模式的命令
非底行模式命令
输入k在当前行向上查找行号 输入回车在当前行向下查找行号
输入n在当前行向上或者向下查找对应值
输入G直接查找到文件最后一个匹配到的地方