多文件編輯
如果當前行還沒有保存(並且 autowrite 未設置),則不能使用:e、:n和:rew命令。命令後面的!使得安全特性無效。
命令
|
功能
|
:e foo |
停止對當前文件的編輯,開始編輯foo文件
|
:e! foo |
同上,但是取消對當前文件的修改
|
:e!
|
裝入當前文件的最近保存的內容
|
[Ctrl+^]
|
返回到最近編輯的文件
|
:n
|
編輯下一個文件(當用vi同時編輯多個文件時)
|
:set autowrite(aw) |
在用:n切換到下一個文件之前自動保存當前文件
|
:rew
|
返回到文件列表的第一個文件(當用vi同時編輯多個文件時)
|
:r foo |
把foo文件的內容插入當前行的下面
|
命令
|
功能
|
: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!
|
顯示輸入模式下的所有映射
|
命令
|
功能
|
:!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程序
|