因為 vim 本身功能強大,可以使用很多指令,且可以在執行的同事調用外部命令,因此這讓我們自訂工具,操作提供了可能!今天我就以編譯 和執行 java 為例,簡單說一下vim 如何自訂快速鍵
首先是指令
vim 定義快速鍵的指令map ,與之相對應的 unmap 是取消已定義的快速鍵的指令!
第二步
如果我們要編譯 一個名為 Hello.java的檔案怎麼做呢
Esc 進入命令模式 輸入 :!javac Hello.java
: 是指令輸入的提示符表示以下輸入的是vim 的指令
! 是標明這之後的操作,是編輯器以外的命令
javac Hello.java 就不用說了
但是既然我們要把這個作為快速鍵調用的操作使用 ,那麼檔案名稱的命名上 必然要具備其通配性,不能太限定話!
這裡 我們使用的是 萬用字元 %
所以整個指令操作過程就是 先按Esc 然後輸入 :!javac % 然後斷行符號
接下來 我們就可以定義快速鍵了 我定義的是 F12 因此 其指令就是
:map <F12> :!javac %
這樣執行下 發現有問題…什麼問題…我們一開始如果不在命令模式下 …這個只能執行不了….所以我們得先輸入 Esc,但是我們在map 時,只要一按Esc 就退出了輸入狀態 該怎麼辦呢 ?答案是使用 <Esc> 字元替代操作,那麼指令就變成
:map <F12> <Esc>:!javac %
斷行符號確定過後 按下F12 指令就出現在螢幕上…可是我還是想讓他直接執行啊 …既然 <Esc>可以代替 Esc 的操作,那什麼可以代替斷行符號操作呢 ? 答案是 <CF> 由此我們整條編譯的快捷操作完成了:
:map <F12> <Esc>:!javac %<CF>
接下來是定義執行指令 Ctrl+F12執行:
:map <C-F12> <Esc>:!java %<CF>
看到這裡 大家應該已經想到這個問題了,java 執行是不可以帶副檔名的 ,更何況當前擴充明是 .java,那麼有什麼辦法 讓他不帶副檔名呢 ? 答案是 %< ,%<表示的就是不帶副檔名的檔案名稱,那麼整條執行語句就成了:
:map <C-F12> <Esc>:!java %<<CR>
這樣快速鍵就可以使用了 … 是不是很方便呢 ?
另附上其他特殊符號:
<Tab> 定位字元
<EOL> 行尾
<BS> 退格