一 进入vi的命令
vi filename :打开或新建文件,并将光标置于第一行首
vi +n filename :打开文件,并将光标置于第n行首
vi + filename :打开文件,并将光标置于最后一行首
vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
vi filename....filename :打开多个文件,依次编辑
VI分为插入模式、命令模式及末行命令模式
由插入模式到命令模式的转换:Esc
二 VI命令模式下的命令
移动光标类命令
h :光标左移一个字符
l :光标右移一个字符
j :光标下移一个字符
k :光标上移一个字符
space :光标右移一个字符
Backspace :光标左移一个字符
k或Ctrl+p :光标上移一行
j或Ctrl+n :光标下移一行
Enter :光标下移一行
w或W :光标右移一个字至字首
b或B :光标左移一个字至字首
e或E :光标右移一个字至字尾
) :光标移至句尾
( :光标移至句首
} :光标移至段落开头
{ :光标移至段落结尾
nG :光标移至第n行首
+n :光标下移n行
-n :光标上移n行
n$ :光标移至n行尾
H :光标移至屏幕顶行
M :光标移至屏幕中间行
L :光标移至屏幕最后行
0 :(注意是数字零)光标移至当前行首
$ :光标移至当前行尾
屏幕翻滚类命令
Ctrl+u :向文件首翻半屏
Ctrl+d :向文件尾翻半屏
Ctrl+f :向文件尾翻一屏
Ctrl+b :向文件首翻一屏
Ctrl+e :屏幕下卷一行
插入文本类命令
i :在光标前
I :在当前行首
a :光标后
A :在当前行尾
o :在当前行之下新开一行
O :在当前行之上新开一行
r :替换当前字符
R :替换当前字符及其后的字符,直至按ESC键
s :从当前光标位置处开始,以输入的文本替代之
S :删除指定数目的行,并以所输入文本代替之
ncw或nCW :修改指定数目的字
nC :修改指定数目的行
>> :右移当前段落一个移动宽度(shiftwidth)
<< :左移当前段落一个移动宽度(shiftwidth)
yy :复制当前行
nyy :复制当前开始的n行
p :在当前行的下面粘贴
P :在当前行的上面粘贴
删除命令
ndw或ndW :删除光标处开始及其后的n-1个字
d^ :删至行首
d$ :删至行尾
ndd :删除从当前行开始的n行
x或X :删除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u :删除输入方式下所输入的文本
搜索及替换命令 :
/pattern :从光标开始处向文件尾搜索pattern
?pattern :从光标开始处向文件首搜索pattern
n :在同一方向重复上一次搜索命令
N :在反方向上重复上一次搜索命令
:s/p1/p2/g :将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g :将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g :将文件中所有p1均用p2替换
. 重复上一个操作
u 撤消上一次操作
~ 切换字符的大小写
三 设置选项(set)
语法:
:set <选项> <参数> (如果需要参数的话)
也可以在一行中指定多个选项
:set all 则显示所有的选项值
对那些无须参数的选项来说,使用:set no<选项>就可以把它给关了
term :设置终端类型
ignorance :在搜索中忽略大小写
list :显示制表位(Ctrl+I)和行尾标志($)
number :显示行号
report :显示由面向行的命令修改过的数目
terse :显示简短的警告信息
warn :在转到别的文件时若没保存当前文件则显示NO write信息
nowrapscan :禁止vi在搜索到达文件两端时,又从另一端开始
mesg :允许vi显示其他用户用write写到自己终端上的信息
vb t_vb= : vi不响铃
hlsearch : 高亮显示搜索匹配结果
四 行方式命令
:n1,n2 co n3 :将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 m n3 :将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d :将n1行到n2行之间的内容删除
:w :保存当前文件
:e filename :不离开vi编辑<文件>
:e! :重新编辑当前文件,忽略所有的修改
:n :编辑下一个文件
:x :保存当前文件并退出
:q :退出vi
:q! :不保存文件并退出vi
:!command :执行shell命令command
:r!command :将命令command的输出结果放到当前行。