Vi命令详解

启动Vi
vi    不指定文件名,在保存文件时需要指定文件名
vi filename     该文件可以是已存在的文件也可以是新建的
vi +n filename     进入vi,光标停在第n行开始处
vi + filename     进入vi,光标停在文件最后一行开始处
vi +/ 字符串 文件名     进入vi,光标停在第一个字符串处


保存文件和退出
在命令模式下,输入两次<Z>,将保存文件并退出vi
在命令模式下,输入:x,将保存文件并退出vi
:w    保存文件内容
:x 文件名    将当前文件的内容保存由“文件名”指定的文件中,若文件存在则产生错误,不退出vi
:w! 文件名    将当前文件的内容保存由“文件名”指定的文件中,若文件存在则覆盖原有文件
:q    退出vi,若文件有改动未保存,则产生错误,不退出vi
:q!    强行退出vi,若有修改未保存,则不保存
:wq    退出并保存文件
:wq!    强行保存退出
:set nu/:set number    显示行号
:set nonu/:set nonumber    取消行号的显示


光标移动   
方向键下    移动到下一行,列不变
方向键上    移动到上一行,列不变
方向键左    移动到前一列,行不变
方向键右    移动到后一列,行不变
0    移动到当前行的行首
$    移动到当前行的行尾
nw    右移n个字,n为数字,光标处于第n个字的字首,w上forword中的w
w    右移一个字,光标处于下一个字的字首
nb    左移n个字,n为数字,光标处于第n个字的字首,b上back中的w
b    左移一个字,光标处于下一个字的字首
(    移动到本句的句首,若已经处于本句的句首,则移动前一句的句首
)     移动到下一句的句首
{    移动到本段的段首,若已经处于本段的段首,则移动前一段的段首
}    移动到下一段的段首
1G    移动到文件首行的句首
G    移动到文件末行的行首
nG    移动到文件第n行的行首
<ctrl>+g    报告光标所处的位置,位置信息显示在vi的最后一行
遇到"."、"?"或"!",vi认为是一句的结束,vi以空白行来作为段的开始和结束


文本的删除
x    删除光标所在的位置的一个字符
nx    删除光标开始的n个字符
dw    删除光标所在位置的一个字,d是delete的首字母
ndw    删除光标开始的n个字
db   删除光标前的一个字
ndb    删除光标前的n个字
d0    删除光标到行首所有字符
d$    删除光标到行尾所有字符
dd    删除当前行
ndd    删除当前行开始的n行
d(    删除光标到句首所有字符
d)    删除光标到句尾所有字符
d{    删除光标到段首所有字符
d}    删除光标到段尾所有字符
若要取消前一次操作,可以按u,u是undo的首字母


文本查找和替换
?string<Enter>    在命令模式与输入?和要查找的字符串"string"并回车即可
n    向文件头方向重复前一个查找命令
N     向文件尾方向重复前一个查找命令
:s/oldstr/newstr    在当前行用newstr替换oldstr,只替换一次,s是substitue的首字母
:s/oldstr/newstr/g    在当前行用newstr替换所有的oldstr
:1,10s/oldstr/newstr/g    在1-10行用newstr替换所有的oldstr
:1,$s/oldstr/newstr/g     在整个文件中用newstr替换所有的oldstr


文本的复制和粘贴
yw    将光标所在位置到字尾的字符复制到缓冲区中,y是yank的首字母
nyw    将光标所在位置到n个字尾的字符复制到缓冲区中,y是yank的首字母
yb    从光标开始向左复制一个字
nyb    从光标开始向左复制n个字
y0    从光标开始复制到行首
y$    从光标开始复制到行尾
yy    复制当前行
nyy    复制当前行开始n行
p    在光标所在位置后粘贴复的内容
P    在光标所在位置前粘贴复的内容
np    在光标所在位置后粘贴复的内容,粘贴n次
nP    在光标所在位置前粘贴复的内容,粘贴n次

猜你喜欢

转载自qiang106.iteye.com/blog/1436411