2013-02-01 12 views
15

Kiedy używam vima w trybie normalnym, często wciskam klawisz TAB przez przypadek, klawisz TAB robi to samo, co Ctrl-I domyślnie. Chcę, aby klawisz TAB, nic nie robić, więc mogę umieścić ten wiersz w pliku vimrc:Odmawianie TAB i nieużywanie Ctrl-I w VIM

nmap <TAB> :echo<CR> 

Zatem klawisz TAB zrobi nic, ale to sprawiło, że klawiszy Ctrl-I nic nie robić zbyt. A więc, jak sprawić, by TAB nic nie robiła, a Ctrl-I działało jak wcześniej w vim (w trybie normalnym)?

Odpowiedz

19

Ze względu na sposób, w jaki dane wejściowe klawiatury są obsługiwane wewnętrznie, niestety nie jest to obecnie możliwe, nawet w GVIM. Niektóre kombinacje klawiszy, jak Ctrl + niealfabetyczne nie może być odwzorowany i Ctrl + listu vs. Ctrl + Przesunięcie + literę nie można odróżnić. (O ile twój terminal nie wysyła wyraźnego kodu termcap, który w większości nie działa.) Dotyczy to również <Tab>/<C-I>, <CR>/. Jest to znany punkt bólowy i temat różnych dyskusji na temat vim_dev i kanał IRV #vim.

Niektórzy ludzie (przede wszystkim Paul LeoNerd Evans) chcą naprawić (nawet dla konsoli Vima w terminalach obsługujących tego), i płynął various proposals.

Jednak od dzisiaj nie pojawiły się żadne łaty ani ochotnicy, chociaż wielu wyraziło chęć posiadania tego w przyszłym wydaniu Vima 8.

+0

Dziękuję bardzo. Znalazłem to niemożliwe na tej stronie [jak mapować i niezależnie] (http://vim.1045645.n5.nabble.com/how-to-map-lt-tab-gt-and-lt-ci- gt-independent-td1185417.html). W związku z tym powinienem się nie naciskać klawisza TAB przez przypadek. – tisyang

+0

Dzięki za odpowiedź. Naprawdę mam nadzieję, że to się wkrótce rozwiąże - wszystkie dyskusje wydają się w końcu wygasać, co oznacza, że ​​wymaga to poważnego ponownego przemyślenia kodu. Oto aktualny (ish) wątek: https://groups.google.com/d/topic/vim_dev/2bp9UdfZ63M/discussion –

+0

Obecny, poprawiony poziom Vim 7.3 sugeruje, że niedługo pojawi się nowe wydanie (7.4?). Mam nadzieję, że ten problem zostanie rozwiązany w przyszłym Vimie 8.0. –

9

radziłbym do konieczności <TAB> zrobić coś pożytecznego:

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

ten sposób można użyć tab dla operacji okiennych. Oczywiście z tym nie możesz mieć zachowania ctrl-i. I mapować ,i na to:

nnoremap ,i <C-I> 
+0

to działa idealnie, powinno być najlepszą odpowiedzią –

0

stwierdziliśmy, że ctrl-tab praca jako domyślne ctrl-i gdy tab jest remaped.

Działa w macvim. Nie sprawdzałem innych vimów.