vi编辑器

vi3种模式

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直接查找到文件最后一个匹配到的地方

  

 

 

 

原文地址:https://www.cnblogs.com/joanna123/p/12182331.html