发博文
个人资料
  • 博客访问:55884
  • 博文数量:58
  • 博客积分:2500
  • 博客等级:少校
  • 注册时间:2006-03-13 11:28:46
订阅我的博客
  • 订阅
  • 订阅到鲜果
  • 订阅到抓虾
  • 订阅到Google
字体大小: 博文
分类: 电脑技术

  启动VI会话   
命令  光标移动  
vi file  编辑file  
vi –r file  系统崩溃后,编辑保存的最后一个file版本  
vi –R file  在只读模式下编辑file  
vi +n file  在只读文件并将光标置于第N行  
vi + file  编辑文件并将光标置于最后一行  
vi file1 file2 file3…   通过文件file3编辑file1,并且保存对file1的改动后,你可以通过键入:n移动到file2  
vi +/string file  编辑文件并将光标置于包含有string的行的开头  


 在vi中添加文本   

a   在光标后添加新的文本  
A  在当前行的末尾添加新的文本  
i  在光标前插入新的文本  
I  在当前行的头部插入新的文本  
o  在当前行的下面打开一行并插入  
O  在当前行的上面打开一行并插入  
:r file  读取file并在当前行后插入  
:nr file  读取file并在第N行后插入  
Escape  返回到命令模式  
^v char  插入时忽略char的特殊意思。这用于插入特殊的字符  


 在vi 中删除文本   

x  删除光标处的字符。在X的前面加上一个数字则可确定要删除的字符数  
nx  删除以光标处开始的N个字符  
X  删除前面的字符。在X的前面加上一个数字则可确定要删除的字符数  
nX  删除前面的n个字符  
dw  删除到下一个单词的开始处为止  
ndw  删除以当前单词为开头随后的n个单词  
dG  删除行一直到文件的结尾  
dd  删除整个行  
ndd  删除以当前行开始的n行  
db  删除前一个单词  
ndb  删除以当前行开始的n 行  
:n,md  删除n到m之间的行  
D or d$  从光标处开始一直删除到行的结尾  
dcursor_command  删除光标命令(cursor_command)所指处的文本,dG将从当前行删除到文件的结尾  
^h或backspac  插入时删除前一个字符  
^w  插入时删除前一个字符  

 在vi中修改文本   

rchar  用char替代当前字符  
Rtext escape  用text替代当前字符,直到输入ESC键结束  
stext escape  用text替代当前字符  
S或cctext escape  用text替代整行  
cwtext escape  用text替代整行  
Ctext escape  将当前字改为text  
cG escape  修改到文件的末尾  
ccursor_cmd text escape  从当前位置处到光标命令(cursor_cmd)所指位置处都改为text  

 vi中的搜索和替代   

/text  在文件中向前搜索text  
?text  在文件中向后搜索text  
n  同最初搜索相同的方向重复搜索  
N  同最初搜索相反的方向重复搜索  
ftext  在当前行中向前搜索text  
Ftext  在当前行中向后搜索text  
ttext  在当前行中向前搜索text,并在text字符前停止  
Ttext  在当前行中向前搜索text,并在text字符后停止  
:set ic  搜索时忽略大小写  
:set noic  使搜索对大小写敏感  
:s/oletext/newtext/  用newtext(新文本)替代oletext(旧文本)  
:m,ns/oldtext/newtext  用newtext替代从m行到n 行中的oletext  
&  重复上一次的:s命令  
:g/text1/s/text/text3  搜索包含text1的行,并用text3替代text2  
:g/text/command  在所有包含text的行中运行command命令  
:v/text/command  在所有不包含text的行中运行conmmand命令  


 vi中的复制   

yy  移出当前行  
nyy  移出n行  
p(小写)  在光标后放置已移出的文本  
P(大写)  在光标前放置已移出的文本  
"(a--z)nyy  复制n行到命名缓冲区,缓冲区的名字为括号中的字母。省略n将只复制当前行  
"(a--z)ndd  复制n行到命名缓冲区,缓冲区的名字为括号中的字母。省略n将只删除当前行  
"(a--z)p  在当前行后放置命名缓冲区中的行,缓冲区的名字为括号中的字母  
"(a--z)p  在当前行放置命名缓冲区中行,缓冲区的名字为括号中的字母  


 vi中的撤消操作   

u  撤消上一次的修改  
U  撤消对当前行  
.( 句号)  重复上一次的修改  
,(逗号)  向相反方向重复上一次的f,F,t或T搜索命令  
;(分号)  重复上一次的f,F,t或 搜索命令  
"np  恢复最后第n个删除 (即恢复缓冲区中有限数目的删除,通常为9个 )  
n   重复上一次的/或?搜索命令  
N  向相反方向重复上一次的/或?搜索命令  


 保存文本和退出vi操作   

:w  保存文件,但不退出vi  
:w file  保存file中的修改,但不退出vi  
:wq或ZZ或:x   保存文件并退出vi  
:q!  不保存文件退出vi  
:e!  重新编辑文件,放弃上一次书写时的修改  


 vi中的选项   

:set all  打印所有选项  
:set nooption  关闭option选项  
:set nu  设置每行前面加上行号  
:set showmode  显示是输入模式还是替代模式  
:set noic  搜索时忽略大小写  
:set list  显示制度(tab)符(^|)和行结尾符($)  
:set ts=8  设置制表(tab) 符的大小(即每次击tab键移动的字符数)  
:set window=n  设置文本窗口中的行数为n  


 vi中的状态   

:.=  打印当前行数  
:=  打印文件的行数  
^g  显示文件名,当前行数,文件中的总行数和文件位置的百分比  
:|  使用字母"|"来显示各种不同的特殊字符,如制表符(tab)和换行符(newline)  


 vi中的定位与标记   

}  在第一列插入{来定义一节  
[[  返回到一节的开头  
]]  向前跳到下一节的开头  
m(a--z)  使用字母标记当前位置,比如mz标记z  
(a--z)  移动光标到指定的标记处,比如' z将移动到z处  


 在vi中连接行   

J  将下一行连接到当前行的末尾  
nJ  连接随后的n行  
H  将光标移动到屏幕的顶行  
nH  从屏幕的顶行移动到第n行  
M  将光标移动到屏幕的中间  
L  将光标移动到屏幕的底行  
nL  从屏幕的底行将光标移动到第n行  
^e(control--e)  将光标向上移动一行  
^y  将光标向下移动一行  
^u  将屏幕向上移动半页  
^d  将屏幕向下移动半页  
^b  将屏幕向上移动一页  
^f  将屏幕向下移动一页  
^l(letter |)  刷新屏幕  
z-return  使当前显示在屏幕的顶部  
nz-return  使第n行显示在屏幕的顶部  
z.  使当前行成为中间行  
nz  在屏幕上使第n行成为中间行  
z-  使当前行成为底行  
nz-  使第n行在屏幕上成为底行  


 vi中的Shell  Escape命令   

:! Command  执行诸如:!Is之类的shell命令command  
:!!  执行最后一个shell命令  
:r! command  从command读取和插入输出,例如:r!Is运行Is并读取内容  
:w! command  将当前被编辑的作为标准输出发送给command ,并执行command,例如:w!grep all  
:cd directory  将当前工作目录变成directory  
:sh  启动一个子shell并用^d(control -d)返回vi  
:so file  在shell程序file中读取和执行命令  


 vi中的宏命令和缩写   

:map key command_seq text  定义key来运行commanf_seq,例如:无论何时利用e移动一个单词的末尾时,用:map e ea来添加  
:map key command_seq text  在状态行上显示所有被定义的宏命令  
:umap key  消除key的宏  
:ab string1 string2  当插入string1时定义一个缩写,用string2代替string1。当插入文本类型string1时,按escape键,这时将插入string2  
:ab  显示所有的缩写  
:cd directory  将当前工作目录改变到directory  
:una string  非缩写化string  
  避免使用控制键盘,符号,并且不使用字符:KVgqv*=和功能键  

 

 Vi中的缩进文本   

^I(control键加I)或tab  在插入文本时,插入移位宽度。移位宽度可以定义  
:set ai  打开自动缩进功能  
:set sw=n  设置移位宽度为n个字符  
n<<  将n行左移一个移位宽度  
n>>  将n行右移一个移位宽度。例如,3>>是将后面的三行右移一个移位宽度  


 vi中的shell过滤器    

!cursor_command command  将文本发送到shell_command,从当前位置   

 vi中的模式匹配    

^  匹配一行的开头。为了在行的开头搜索think,可以使用\^think可以和$结合使用,$匹配行的尾部,   
$  用:g/^$/d删除所有的空行匹配行的尾部。匹配last,只要它跟有新行符你可以使用::g/^$/d   
     
.  匹配任何单个的字符   
\<  匹配词的开头   
\>  匹配词的尾部   
[string]  匹配在strng中的任意单个字符。为了搜索到mp,mP,MP或MP可以使用:/[mM[pP]   
  将所有的input或Input改为INPUT:   
  :%/[li]nput/INPUT/g   
[^string]  匹配不在string中的任意字符   
[a-p]  匹配在a和p中的任意字符   
*  匹配零个或多个出现在表达式前面的字符   
\  下一个字符转意。为了搜索[,可以使用一下方法:^[   
\\  转意\字符   

亲,您还没有登录,请[登录][注册]后再进行评论