vi的操作模式
vi
提供两种操作模式:输入模式(insert mode)和指令模式(command mode)。在输入模式下,用户可输入文本资料。在指令模式下,可进行删除、修改等各种编辑动作。
在输入模式下,按Esc键切换到指令模式下。
在指令模式下,按输入指令(iao等)进入输入模式。

进入vi

$ vi  filename
直接键入“vi + 所要编辑的文件名,即可对指定的文件进行编辑。
如果指定的文件为新文件,则提示:“New file”,否则显示该文件的当前内容。
$ view filename
以只读方式打开文件filename
指令模式


3.1
进入输入模式
a       
在当前游标之后输入
A      
在当前行之末输入
i         
在当前游标之前输入
I        
在当前行之首输入
o       
在当前行之下新增一行,并在新增行输入
O      
在当前行之上新增一行,并在新增行输入
输入结束后,按Esc键退出输入模式。


3.2
游标移动
h        
向左移动一个字元
l        
向右移动一个字元
j        
向下移动一个字元
k        
向上移动一个字元
b       
左移一个单词,至词首
w       
右移一个单词,至词尾
0        
移到当前行行首
$        
移到当前行行尾
+        
移至下一行的行首
-        
移至上一行的行首
H       
移至视窗的第一行
M       
移至视窗的中间一行
L       
移至视窗的最后一行
G       
移至该文件的最后一行
nG     
移至该文档的第n
n+      
下移n
n-      
上移n


3.3
视窗移动
  + f            
视窗下卷一页
  + b            
视窗上卷一页
  + d            
视窗下卷半页
  + u            
视窗上卷半页
  + e           
视窗下卷一行
  + y            
视窗上卷一行


3.4
删除操作
x           
删除游标所在字元
X         
删除游标前一字元
dw       
从游标当前位置开始向后删除一个单词
db        
从游标当前位置开始向前删除一个单词
d0         
从行首删除至当前游标位置
d$         
从游标当前位置删除至行尾
dd        
删除游标所在行
D         
d$

3.5 修改操作

s          修改游标所在字元,修改完成后按Esc键结束
S        
修改整行内容,修改完成后按Esc键结束
r         
替换当前游标所在字元
R        
进入替换状态,直至按Esc键结束
cw       
修改一个单词(从游标位置至词尾)
cb        
修改一个单词(从词首至游标位置)
cc        
修改整行内容,完成后按Esc键结束,同S
c0       
修改行首至游标位置的内容
c$       
修改游标位置至行尾的内容
~         
游标所在字元大小写切换

 

3.6 指令重复

在指令模式中,可在指令前面加入一个数字n,则该指令会重复执行n次。常用的重复操作有:
nx        
删除n个字元
ndd      
删除n
ns        
修改n个字元

3.7 取消前一动作(Undo

u         撤消上一指令的结果


3.8
查找字符串                                               
/
字符串           从当前游标向后查找该字符串
?
字符串          从当前游标向前查找该字符串
n                     
从当前游标向后查找下一个字符串
N                    
从当前游标向前查找下一个字符串
                                               
3.9
查看编辑状况                                               
+ g          
显示正在编辑的文件名、当前游标所在行数、文件总行数、文件是否被修改
                                               
保存与退出                                               
:w             
保存,但不退出
:wq           
保存并退出
:x              
:wq
:q              
退出,如果当前文件没有保存,禁止退出
:q!            
不保存退出
:w file1    
将内容保存至文件file1中,注意:此时编辑的仍为原文件
:w! file1  
将内容覆盖保存至文件file1中,如文件file1存在,:w file1将禁止执行
                                               
 
环境设置                               
:set            
显示已设置的环境状况
:set all     
显示所有的环境设置选项
:set nu     
显示行号
:set nonu 
不显示行号
:set ts =n
设置Tab键的长度为n
                                               
执行指令                                                               
以下用具体的数字为例进行介绍,数字表示行数,游标所在行可用“.”代替,文件最后一行可用“$”代替。
                               
:10,20d     
删除第10行至第20行的内容
:10d           
删除第10行的内容
:%d             
删除全部内容
:10,20co30    
将第10行至第20行的内容复制到第30行之后
:10,20mo30   
将第10行至第20行的内容移动到第30行之后
:1,$s/old/new
将第1行至最后一行中的old替换成new
:1,$s/^/new     
将第1行至最后一行的内容前面插入new
:10                     
将游标移至第10
                                               
 
重复指令                                               
.                
重复上一条指令
                                               
切换到shell状态                                               
:sh            
切换到shell状态,exit返回