vi基本上可以分为三种模式,分别是一般模式、编辑模式和命令行模式,各模式的功能区分如下
一般模式:
当以vi打开一个文件就直接进入一般模式了(这是默认的模式)。在这个模式中,可以使用上下左右按键来移动光标,你可以使用删除字符或删除整行来处理文件内容,也可以使用复制、粘贴来处理你的文件数据。
h:控制光标左移一格
j :控制光标下移一格
k:控制光标上移一格
l :控制光标右移一格
#l:光标移到该行的第#个位置,如:5l,56l
x: 每按一次,删除光标所在位置的"后面"一个字符
#x: 例如,「6x」表示删除光标所在位置的"后面"6个字符
X: 大写X,每按一次,删除光标所在位置的"前面"一个字符
#X: 例如,「20X」表示删除光标所在位置的"前面"20个字符
dd: 删除光标所在行
#dd:从光标所在行开始删除#行
yw: 将光标所在之处到字尾的字符复制到缓冲区中
#yw:复制#个字到缓冲区 yy:复制光标所在行到缓冲区
#yy: 例如,「6yy」表示拷贝从光标所在的该行"往下数"6行文字
p: 将缓冲区内的字符贴到光标所在位置;
注意:所有与"y"有关的复制命令都必须与"p"配合才能完成复制与粘贴功能
ctrl+g:列出光标所在行的行号
#G:例如,「15G」,表示移动光标至文章的第15行行首
cw: 更改光标所在处的字到字尾处
c#w:例如,「c3w」表示更改3个字
u:撤销
ctrl+r:恢复撤销上一步
编辑模式:
在一般模式中可以进行删除、复制、粘贴等的操作,但是却无法编辑文件的内容,只有当你按下【i, I, o,O, a, A, r, R】等任何一个字母之后才会进入编辑模式。这时候屏幕的左下方会出现【INSERT或 REPLACE】的字样,此时才可以进行编辑。而如果要回到一般模式时, 则必须要按下【Esc】即可退出编辑模式。
i : 从目前光标所在处插入
I : 在目前所在行的第一个非空格符处开始插入
a: 从目前光标所在的下一个字符处开始插入
A: 从光标所在行的最后一个字符处开始插入
o :在目前光标所在的下一行处插入新的一行
O:在目前光标所在处的上一行插入新的一行
r : 只会取代光标所在的那一个字符一次
R:会一直取代光标所在的文字,直到按下 ESC 为止
Esc:退出编辑模式,回到一般模式
命令行模式:
输入【 : / ? 】三个中的任何一个,就可以将光标移动到最底下那一行。在这个模式中,可以 提供查找、读取、存盘、替换字符、离开vi、显示行号等的动作。
注意:如在编辑模式,需按下【Esc】退出编辑模式,回到一般模试
a.进入命令行模式 (指令前带 ":",再敲指令前先敲 ":" )
:w : 保存编辑的内容
:w! :强制写入该文件,但跟你对该文件的权限有关
:q : 离开vi
:q! : 不想保存修改强制离开
:wq :保存后离开
:x : 保存后离开
ZZ :若文件没有更动,则不保存离开,若文件已经被更改过,则保存后离开
:w filename :将编辑的数据保存成另一个文件(类似另存)
:r filename : 在编辑的数据中,读入另一个文件的数据。
即将【filename】 这个文件的内容加到光标所在行后面
:n1,n2 w filename :将n1到n2的内容保存成filename这个文件
:! command :暂时离开vi 到命令行模式下执行command的显示结果;
例如 【:! ls /home】即可在 vi 当中察看/home底下以ls输出的文件信息
:set nu :显示行号
:set nonu :与 set nu 相反,为取消行
b.查找(指令前带 ":",再敲指令前先敲 ":" )
/xxx: 向光标向下寻找一个名称为xxx的字符串
?xxx:向光标向上寻找一个名称为xxx的字符串
n:代表重复前一个查找的动作
N:与n刚好相反,为【反向】进行行前一个查找动作
:n1,n2s/xxx/yyy/g:n1与n2为数字,在第n1与n2行之间查找xxx这个字符串, 并将该字符串替换为yyy
:1,$s/xxx/yyy/g: 从第一行到最后一行查找xxx字符串,并将该字符串替换为yyy
:1,$s/xxx/yyy/gc:从第一行到最后一行查找xxx字符串,并将该字符串替换为yyy,且在替换前提示用户确认是否进行替换