W vimie, jak mogę zmienić mapowanie <tab> bez ponownego mapowania <Ctrl + i>?

14

Lubię używać tabulatora do przeskakiwania między podzielonymi oknami, więc mam map <tab> <C-W><C-W>w .vimrc. Zauważyłem jednak, że dzięki temu Ctrl + I nie zachowuje się już jak Ctrl + I, ale jako Ctrl + W, Ctrl + W. Jak mogę odwzorować tylko, <tab>ale nie <C-i>?

Jonathan
źródło

Odpowiedzi:

10

Ze względu na sposób, w jaki klawiatura jest obsługiwana wewnętrznie, nie jest to dzisiaj ogólnie możliwe, nawet w GVIM. Niektóre kombinacje klawiszy, takie jak Ctrl+ niealfabetyczne, nie mogą być odwzorowane, a Ctrllitera Ctrl+ w przeciwieństwie do + Shift+ litera nie mogą być rozróżnione. (O ile twój terminal nie wyśle ​​dla niego odrębnego kodu termcap , co większość tego nie robi). W trybie wstawiania lub wiersza poleceń spróbuj wpisać kombinację klawiszy. Jeśli nic się nie dzieje / jest wstawione, nie można użyć tej kombinacji klawiszy. Dotyczy to również <Tab>/ <C-I>, <CR>/ <C-M>/ <Esc>/ <C-[>itd. (Jedynym wyjątkiem jest <BS>/ <C-H>.) Jest to znany problem i temat różnych dyskusji na vim_dev i kanale IRC #vim.

Niektórzy ludzie (przede wszystkim Paul LeoNerd Evans) chcą to naprawić (nawet dla konsoli Vima w terminalach, które to obsługują) i przedstawili różne propozycje, cp. http://groups.google.com/group/vim_dev/browse_thread/thread/626e83fa4588b32a/bfbcb22f37a8a1f8

Ale na dzień dzisiejszy nie pojawiły się żadne łatki ani ochotnicy, choć wielu wyraziło chęć posiadania tego w przyszłym wydaniu Vim 8.

Ingo Karkat
źródło
1
czy ten problem mapowania / rozpoznawania kodu klucza został już rozwiązany w Vimie 8 (rok 2017)? Uważam, że wciąż mogę odtworzyć przykład Jona na moim Vimie 8.0
llinfeng,
@llinfeng: Nie, niestety nie. Bram pracuje obecnie nad integracją terminala z Vimem; wydaje się, że korzysta z biblioteki stworzonej przez Paula Evansa, więc może w końcu doprowadzi to również do poprawy obsługiwanych klawiszy. (Ale w tej chwili to czysta spekulacja.)
Ingo Karkat,
0

Nie wszystkie skróty są możliwe w Vimie, szczególnie jeśli znajduje się on pod terminalem. Nie polecam do tego celu używać klawisza skrótu. Ale alternatywnym rozwiązaniem może być:

" Note: Allows faster switching between windows with "Ctrl+w"! By Questor
nnoremap <silent> <C-w> <C-w><C-w>
inoremap <silent> <C-w> <Esc><C-w><C-w>
vnoremap <silent> <C-w> <Esc><C-w><C-w>

Zobacz przykład zastosowania w https://github.com/eduardolucioac/groovim/blob/master/.vimrc

[]

Eduardo Lucio
źródło