Vi的三种状态
Command mode : 控制屏幕光标之移动,字符或行之删除,复制某区段及进入 Insert mode 下,或者到 Last line mode 。
Insert mode : 唯有在 Insert mode 下, 才可做文字资料输入,按Esc键可到 Command mode 。
Last line mode : 将档案写入或离开编辑器,亦可设定编辑环境, 如寻找字串、列出行号..等。
Command mode下功能键简介
1.进入 Insert mode
i :在目前光标所在处插入输入之文字,已存在文字会向后移。
I :在目前所在行的第一个非空格符处开始插入。
a :从目前光标所在的下一个字符处开始插入
A :从目前光标所在行的最后一个字符处开始插入
o :在目前光标所在的下一行处插入新的一行。
O :在目前光标所在的上一行处插入新的一行。
2.移动光标类命令
h或向左方向键 :光标向左移动一个字符
j或向下方向键 :光标向下移动一个字符
k或向上方向键 :光标向上移动一个字符
l或向右方向键 :光标向右移动一个字符
0 :数字0移动到当前行的最前面一个字符处
$ :移动到当前行的最后面字符处
G :移动到当前档案的最后一行
H :光标移动到当前屏幕的最上面一行
M :光标移动到当前屏幕的中间一行
L :光标移动到当前屏幕的最后一行
3.屏幕翻滚类命令
Ctrl + f :屏幕向前(下)移动一页
Ctrl + b :屏幕向后(上)移动一页
Ctrl + d :屏幕向前(下)移动半页
Ctrl + u :屏幕向后(上)移动半页
4.删除
x:删除一个字符
nx:n代表数字,连续向后删除n个字符
dd:删除当前行
ndd:n代表数字,删除从当前行算起的n行
do:删至行首
d$:删至行尾
d1G:删除光标所在到第一行的所有数据
dG:删除光标所在到最后一行的所有数据
5.更改
cw:更改当前光标处得一个单词
cnw:n代表数字,更改当前光标向后连续n个单词
6.取代
r:取代光标所在的那一个字符
R:一直取代光标所在的文字,直到按下ESC为止。
7.复制
yw:复制光标处的一个单词
yy:复制光标所在的那一行
nyy:n为数字。复制光标所在的向下n行。
y1G:复制光标所在行到第一行的所有数据
yG:复制光标所在行到最后行的所有数据
y0:复制光标所在那个字符到该行行首的所有数据
y$:复制光标所在那个字符到该行行尾的所有数据
p:如果复制的是行则在当前光标的一行粘贴,如果复制的是非行的话,则在光标所在处开始粘贴。
8.跳至指定之行
Ctrl + g:列出档案的行数
nG:n代表数字,移动光标至第n行的行首
9.进入Last Line mode
在Command mode下输入:,/,?进入Last Line mode。
Last line mode下指令简介
1.显示行号
:set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu 与 set nu相反,取消行号
2.保存离开
:w 将编辑的数据写入硬盘档案中
:w! 强制写入
:q 如果未有改动,离开vi;否则提示已有改动
:q! 强制离开不存储档案。
:wq 储存后离开
:e! 将档案恢复到最原始的状态
3.搜索与取代
/word 向光标之下寻找一个字符名称为word的字符串。
?word 向光标之上寻找一个字符名称为word的字符串。
n:在同一方向重复上一次搜索命令
N:在反方向上重复上一次搜索命令
:n1,n2s/word1/word2/g n1与n2为数字。在第ni行与n2行之间寻找word1这个字符串,并将该字符串取代为word2。
:1,$s/word1/word2/g 从第一行,到最后一行寻找word1字符串,并将该字符串替换为word2。
:1,$s/word1/word2/gc 从第一行,到最后一行寻找word1字符串,并将该字符串替换为word2。且在取代前
显示提示字符给使用者进行确认(confirm),是否需要取代。
:s/p1/p2/g:将当前行中所有p1均用p2替代
:g/p1/s//p2/g:将文件中所有p1均用p2替换
4.其它
:w [filename] 将编辑的数据存了另一个档案
:r [fileName] 读入另一个档案的数据到当前光标所在行的后面
:! command 暂时离开vi到指令模式下执行command的显示效果