2015-05-20 59 views
2

我是vimscrip的新手。我正在嘗試使用.vimrc中的一些代碼來自定義我的vim文本編輯器。Vimscript imap ctrl bug

這裏是我的全部代碼:

map m dd 
vmap a Gy 
imap <c-i> #include 
iabbrev LOL Mark was here 
autocmd VimEnter * echo "Welcome to vim :)" 

if strftime("%H") < 12 
    set background=light 
else 
    set background=dark 
endif 

一切完美的作品除了imap <c-i> #include

如果我在插入模式下輸入CTRL+i,它會像它應該那樣寫入#include

但是,如果我推TAB,它也會在插入模式下寫入#include

我不明白爲什麼會發生這種情況。建議任何人?謝謝

+3

''和''彼此不可區分。您需要選擇另一個快捷方式。 – romainl

+0

''與''特別難以區分嗎?或者我可以''(如int'ctrl + m')嗎? – mas4

+0

''與''無法區分。你應該嘗試''映射:':help mapleader'。 – romainl

回答

3

這不是一個錯誤,這是一個不幸的設計限制。

由於鍵盤輸入在內部處理的方式,這種情況現在通常不可能,即使在GVIM中也是如此。一些組合鍵,像按Ctrl +非字母不能被映射,並按Ctrl +信與按Ctrl ++信無法區分。 (除非你的終端發送了一個明確的termcap代碼,但大部分都沒有。)在插入或命令行模式下,嘗試輸入組合鍵。如果沒有任何事情發生/插入,則不能使用該組合鍵。這也適用於<Tab>/<C-I><CR>/<C-M>/<Esc>/<C-[>等(僅例外是<BS>/<C-H>)。這是一個已知的痛點,並在vim_dev各種討論和#vim IRC頻道的主題。

有些人(最重要的是Paul LeoNerd Evans)想要解決這個問題(甚至在支持這種終端的終端上使用Vim),並且提出了各種各樣的建議。 http://groups.google.com/group/vim_dev/browse_thread/thread/626e83fa4588b32a/bfbcb22f37a8a1f8

但截至今日,還沒有補丁或志願者尚未出面,儘管許多人表示希望在未來的Vim 8主要版本中擁有此版本。