2009-12-05 171 views
5

有沒有辦法在vim中將一系列按鍵映射到命令行命令(在Ex模式下輸入:之後的命令)?將按鍵序列映射到命令行命令

+1

當然!你能舉一個你想做什麼的例子,或者你只是問一般? – Rook 2009-12-05 06:13:22

+0

就在一般情況下,很多次我發現我反覆做同樣的事情,但另一方面,我不想爲它創建一個鍵綁定(我不想要另一個Emacs,我正在使用所有我的命令修改鍵) – Opt 2009-12-06 03:40:02

回答

7

是的,它直觀地叫:地圖

例子:

:map foo :echo "bar"<CR> 

沒有在插入模式下按下鍵foo VIM將與「酒吧」作出迴應。 在vim中輸入:help :map以獲取更多信息。 默認情況下,您可以將要加載的映射放置在.vimrc文件中。

您可以獨立映射不同模式的按鍵,如插入模式(:imap)和可視模式(:vmap)。另請參見重映射的主題vim的幫助(:noremap)

更新

如果你要使用命令模式的別名(但可以插入方式也做),你會想使用縮寫

要定義命令模式的縮寫,請使用:ca(這是cabbrev的縮寫)。請參閱vim help :help :ca和更多信息:help :abbreviations

注意,與map不同,縮寫不會被vim命令替換,而會被字面字符替換。縮寫會在您按空格鍵或輸入時觸發。

例子:

" let me type :syn=cpp instead of :set syntax=cpp 
" 
:ca syn set syntax 

" fix my favorite spelling error 
" 
:abbr teh the 

" this does something different than the :map example above 
" 
:iabb foo :echo "bar"<CR> 

" this is ugly, misusing an abbreviation as :map by simulating ESCAPE press 
" 
:iabb hello <ESC>:echo "world"<CR> 
+0

這使得某些東西更討厭 - 如果例如我想輸入fo,那麼我必須稍等一會才能執行該命令序列,因爲fo是foo的子字符串。有沒有辦法將命令行命令(在:提示後輸入的命令)映射到一系列按鍵? – Opt 2009-12-06 03:42:40

+0

我已經更新了我的回覆 – catchmeifyoutry 2009-12-06 04:50:41