vi/vim 命令手冊(高級篇)

vi/vim 命令手冊(高級篇)

多文件編輯
  
 如果當前行還沒有保存(並且 autowrite 未設置),則不能使用:e、:n和:rew命令。命令後面的!使得安全特性無效。

 命令
功能 

 :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]
 在窗口之間切換
 :on
 把當前窗口變爲唯一的窗口
 :q
 退出當前窗口
 :qa
 退出所有窗口
 :xa
 保存並退出全部窗口
 [Ctrl]+
 增大窗口尺寸
 [Ctrl]-
 減小窗口尺寸

搜索與重複
  
 搜索模式pat可以時一個字符串,也可以是一個正則表達式。vi使用一套專用的字符序列來執行一行內的搜索。

 命令
功能 
 /pat
 向前搜索pat
 ?pat
 向後搜索pat
 /printf
 向前搜索printf
 ?[0-0]$
 向後搜索行尾的數字
 /^#
 向前搜索行首的#
 n
 按上次搜索方向重複搜索
 N
 按與前次搜索的相反方向重複搜索

 :set wrapscan(ws)

 繼續搜索直至達到文件尾

 :set ignorecase(ic)

 搜索時不區分大小寫

 :set magic

 保留正則表達式字符的意義
 fc
 在當前行向前搜索字符c
 Fc
 在當前行向後搜索字符c
 ;
 在當前行重複上次向前搜索
 ,
 在當前行重複上次逆向搜索

替換
  
 源模式s1也可以是正則表達式。使用歐冠地址時,"."代表當前行,"$"代表最後一行,"1,$"代表整個文件。

 命令
功能 
 :.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程序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章