admin 管理员组

文章数量: 887021

from: http://www.pctartarus/bbs/thread-911-1-1.html

文件編輯

:e foo停止對當前文件的編輯,開始編輯foo文件 
:e! foo同上,但是取消對當前文件的修改 
:e!  裝入當前文件的最近保存的內容 
[Ctrl+^]  返回到最近編輯的文件 
:n  編輯下一個文件(當用vi同時編輯多個文件時) 
:set autowrite(aw) 在用:n切換到下一個文件之前自動保存當前文件
  :rew  返回到文件列表的第一個文件(當用vi同時編輯多個文件時) 
:r foo 把foo文件的內容插入當前行的下面 



窗口(vim)

:sq  把當前窗口拆分為兩個 
:new  打開一個新的空白窗口 
:[Ctrl+w][Ctrl+w]  在窗口之間切換 
n  把當前窗口變為唯一的窗口 
:q  退出當前窗口 
:qa  退出所有窗口 
:xa  保存並退出全部窗口 
[Ctrl]+  增大窗口尺寸 
[Ctrl]-  減小窗口尺寸 



搜索與重複

/pat  向前搜索pat 
?pat  向後搜索pat 
/printf  向前搜索printf 
?[0-0]$  向後搜索行尾的數字 
/^#  向前搜索行首的# 
n  按上次搜索方向重複搜索 
N  按與前次搜索的相反方向重複搜索 
:set wrapscan(ws) 繼續搜索直至達到文件尾 
:set ignorecase(ic) 搜索時不區分大小寫 
:set magic 保留正則表達式字符的意義 
fc  在當前行向前搜索字符c 
Fc  在當前行向後搜索字符c 
;  在當前行重複上次向前搜索 
,  在當前行重複上次逆向搜索 



替換

:.s/s1/s2  把當前行中第一次出現的s1替換為s2 
:1,$s/s1/s2  把整個文件裡的s1替換為s2 
:1,$s/echo/printf/g  把全部的echo替換為printf 
:1,$s/s1/s2/gc  按交互方式把全部s1替換為s2 
:1,$s/#//g  刪除文件中所有的「#」 
:3,10s/^/#/g  在3至10行的行首插入「#」 
s/$/;/  在最後一行的行尾插入「;」 
:1,$s/s1/s2/g  把所有的s1替換為s2 
:1,$s/HEAD/<&>/g  把所有的HEAD替換為<HEAD> 



標誌與書籤

ma 設置一個標籤a  
'a  移動到標籤a 
"  在當前標誌與前一個標誌位置之間切換 



重做與恢復

.  重複上次命令 
u  取消上次的編輯命令(在vim裡取消所有以前的命令) 
[Ctrl+r]  重做上次取消的操作(只限於vim)
  U  取消所有對當前行的操作 
"4p  從緩衝區中恢復第4次最近的刪除操作 



縮寫表示

:ab name stg 把name縮寫為stg
  :unab stg 刪除stg縮寫 
:ab  列出所有的縮寫 



映射鍵

:map key commands 把key映射到commands 
:map! key commands在輸入模式下把key映射到commands 
:unmap key 取消命令模式下的key映射 
:unmap! key取消輸入模式下的key映射 
:map  顯示命令模式下所有的映射 
:map!  顯示輸入模式下的所有映射 


與UNIX的接口命令

:!cmd  執行UNIX的cmd命令 
:!%  把當前文件作為shell或perl腳本執行 
:r !cmd把cmd命令的結果插入到當前行的下面 
:r !head -n 3 foo 把foo文件前三行內容插入到當前行的下面 
sh  暫時退出UNIX shell 環境
  [Ctrl+z]  暫停編輯(用fg命令可以返回vi編輯器) 
:!cc%  編譯正在編輯的C程序 
:!javac % 編譯正在編輯的Java程序 

欢迎加群互相学习,共同进步。QQ群:iOS: 58099570 | Android: 572064792 | Nodejs:329118122 做人要厚道,转载请注明出处!





















本文转自张昺华-sky博客园博客,原文链接:http://wwwblogs/sunshine-anycall/archive/2010/11/06/1870870.html ,如需转载请自行联系原作者

本文标签: 命令 大全 BSD vi vim