1):!command
不退出vim,並執行shell命令command,將命令輸出顯示在vim的命令區域,不會改變當前編輯的文件的內容
例如
:!ls -l
特別的可以運行:!cmd來啓動一個cmd shell並執行命令,不需要退出vim
2):r !command
將shell命令command的結果插入到當前行的下一行
例如
:r !date,讀取系統時間並插入到當前行的下一行。
可利用:vs|r !date實現vim內嵌shell的效果。注意其中的|號。
3):起始行號,結束行號 !command
將起始行號和結束行號指定的範圍中的內容輸入到shell命令command處理,並將處理結果替換起始行號和結束行號指定的範圍中的內容
例如
:62,72 !sort,將62行到72行的內容進行排序
:1,$ !sort,將全文內容進行排序
可以只指定起始行,例如:62 !tr [a-z] [A-Z],將62行的小寫字母轉爲大寫字母當前光標所在行,除可以指定行號外,也可以用.表示,例如:. !tr [a-z] [A-Z],將當前行的小寫轉爲大寫
4):起始行號,結束行號 w !command
將起始行號和結束行號所指定的範圍的內容作爲命令command的輸入。不會改變當前編輯的文件的內容
例如
:62,72 w !sort,將62行到72行的內容進行排序,但排序的結果並不會直接輸出到當前編輯的文件中,而是顯示在vim敲命令的區域
特殊的可以下面這麼用
:62 w !bash,將會把第62行的內容作爲bash命令來執行並顯示結果,而且不會改變當前編輯的文件的內容同樣的:. w !bash,將當前行的內容作爲bash命令來執行
例如52行內容爲ls -l
那麼輸入:52 w !bash就跟執行!ls -l是一樣的效果,如果你用的shell是bash shell
如果輸入的是:52 !bash,那麼會把第52行的內容也就是ls -l作爲命令執行,同時命令的輸出結果會替換第52行的內容,注意其中的區別。
快速模式切換
Ctrl+O 可以暫時從insert mode切換爲normal mode,當輸入一個命令後又切換回insert mode。
Ctrl+[ 可以將insert mode切換到normal mode。
imap jj將模式切換按鍵映射到jj。
當前文件:
Ctrl+G顯示當前文件名
% 當前文件名
%:h 文件名的頭部.例如../path/test.c就會爲../path
%:t 文件名的尾部.例如../path/test.c就會爲test.c
%:r 無擴展名的文件名.例如../path/test就會成爲test
%:e 擴展名
快速文件切換:
Ctrl+O/Ctrl+I 切換到上次光標的位置,特別適合於多文件編輯時進行切換。這個功能不需要ctags。
m[數字/符號/字母] 設置標籤。
'/`[標籤名] 跳轉到標籤