VI 常用指令

来源:互联网 发布:淘宝店铺行业排名 编辑:程序博客网 时间:2024/06/07 08:55

vi可分为三种操作状态,分别是命令模式(Command mode)、插入模式(Insert mode)和底线命令模式(Last line mode),各模式的功能区分如下:

1. Comand mode:控制屏幕光标的移动,字符或光标的删除,移动复制某区段及进入Insert mode下,或者到Last line mode。
2. Insert mode:唯有在Insert mode下,才可做文字数据输入,按Esc等可回到Comand mode。
3. Last line mode:将储存文件或离开编辑器,也可设置编辑环境,如寻找字符串、列出行号等。
不过可以把vi简化成两个模式,即是将Last line mode也算入Command mode,把vi分成Command 和Insert mode。


【进入vi的命令】
vi filename :打开或新建文件,并将光标置于第一行首 
vi +n filename :打开文件,并将光标置于第n行首 
vi + filename :打开文件,并将光标置于最后一行首 
vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 
vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename 
vi filename....filename :打开多个文件,依次进行编辑 


【移动光标类命令】
h :光标左移一个字符 
l :光标右移一个字符 
k :光标上移一行 
j :光标下移一行 
w :光标右移一个字至字首 
b :光标左移一个字至字首 
n+:光标下移n行 
n-:光标上移n行 
H :光标移至屏幕顶行 
M :光标移至屏幕中间行 
L :光标移至屏幕最后行 
0:(注意是数字零)光标移至当前行首 
$:光标移至当前行尾 


【屏幕翻滚类命令】
Ctrl+f:向文件尾翻一屏 
Ctrl+b;向文件首翻一屏 
Ctrl+u:向文件首翻半屏 
Ctrl+d:向文件尾翻半屏 


【插入文本类命令】  Insert mode。(i=insert、a=append、o=open、r=replace)
i :在光标前 
I :在当前行首 
a:光标后 
A:在当前行尾 
o:在当前行之下新开一行 
O:在当前行之上新开一行 
r:替换当前字符 
R:替换当前字符及其后的字符,直至按ESC键 


【删除命令】 
dd:删除光标所在行。[超常用] 
ndd:删除当前行及其后n-1行 
d0:(数字零)删至行首 
d$:删至行尾 
x: 删除一个字符,x删除光标后的,而X删除光标前的 
nx:例如,6x 表删除光标所在位置的后面6个字符。[常用]
Ctrl+u:删除输入方式下所输入的文本


【搜索及替换命令】 
/pattern:从光标开始处向文件尾搜索pattern 
?pattern:从光标开始处向文件首搜索pattern 
n:在同一方向重复上一次搜索命令 (n=next)
N:在反方向上重复上一次搜索命令 
:s/p1/p2/g:将当前行中所有p1均用p2替代 
:g/p1/s//p2/g:将文件中所有p1均用p2替换 


【底线命令模式】
:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下 
:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下 
:n1,n2 d :将n1行到n2行之间的内容删除 
:w :保存当前文件    
:w /tmp/1.txt:保存所做的所有修改为1.txt
:e filename:打开文件filename进行编辑 
:x:保存当前文件并退出 (等同于:wq)
:q:退出vi 
:q!:不保存文件并退出vi 
:!command: 执行shell命令command 
:r!command:将命令command的输出结果放到当前行 


【寄存器操作】
yy:复制光标所在行。[超常用]
nyy:复制光标所在行往下的n行。
nyw:复制光标所在处往后的n个字word。
nyl:复制光标所在处往后的n个字符char。
p:复制单行到您想粘贴之处。(指令‘yy’与‘p’必须搭配使用)
u:假如您误操作一个指令,可以马上按u,回复到上一个操作。取消上一个操作(u=undo)     
"?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字 
"?nyw:将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字 
"?nyl:将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字 
"?p:取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字 
ndd:将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。


【其他】
按冒号“:”或“/”或“?”三键的其中一键进入Last line mode。
:set nu: 输入“:set nu”后,会在文章的每一行前面列出行号。
多文件修改:vi file1 file2 
yy 在文件1的光标处拷贝所在行 
:n 切换到文件2 (n=next) 
p 在文件2的光标所在处粘贴所拷贝的行 

:N 切换回文件1 


0 0
原创粉丝点击