2013-02-01 68 views
15

當我在正常模式下使用vim時,我經常意外按下TAB鍵,TAB鍵默認與Ctrl-I做同樣的事情。我要讓TAB鍵做什麼,所以我把這個線在vimrc文件:如何在VIM中取消映射TAB並且不使Ctrl-I無效

nmap <TAB> :echo<CR> 

因此,TAB鍵會做什麼,但是這也取得了關鍵的Ctrl鍵,我什麼都不做。 那麼,如何讓TAB什麼也不做,Ctrl-I和vim(正常模式)一樣工作得很好?

回答

19

由於鍵盤輸入在內部處理的方式,現在這種情況通常不可能,即使在GVIM中也是如此。一些組合鍵,像按Ctrl +字母不能映射,並按Ctrl +按Ctrl ++無法區分。 (除非你的終端發送的出與衆不同的的termcap代碼,其中大部分沒有。)這也適用於<Tab>/<C-I><CR>/<C-M>等,這是一個已知的痛點,並在vim_dev各種討論的主題, #vim IRC頻道。

有些人(主要是Paul LeoNerd Evans)想要解決這個問題(甚至在支持這個終端的控制檯Vim中),並且已經漂浮了various proposals

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

+0

非常感謝。我也發現在這個頁面中這是不可能的[如何獨立地映射](http://vim.1045645.n5.nabble.com/how-to-map-lt-tab-gt-and-lt-ci- GT-獨立地-td1185417.html)。因此,我應該讓自己不要無意中按下TAB鍵。 – tisyang

+0

感謝您的回答。我真的希望這個問題能儘快解決 - 所有的討論似乎最終都會被拋出,這意味着它需要重新思考一個主要的代碼。這是一個當前(ish)線程:https://groups.google.com/d/topic/vim_dev/2bp9UdfZ63M/discussion –

+0

Vim 7.3的當前補丁級別表明很快會有一個新版本(7.4?)。我希望這個問題在未來的Vim 8.0中得到解決。 –

9

我會建議具有<TAB>做一些有用的東西:

nmap <TAB> <C-W> 
nmap <TAB><TAB> <C-W><C-W> 

這種方式,您可以使用tab的窗口操作。當然,你不能有ctrl-i的行爲。我映射,i此:

nnoremap ,i <C-I> 
+0

這完美的作品,應該是最好的答案 –

0

我發現ctrl-tab工作作爲默認ctrl-itab被remaped。

在macvim中工作。我沒有檢查其他vims。