В vim, как я могу переназначить <tab> без переназначения <Ctrl + i>?


14

Мне нравится использовать tab для перехода между разделенными окнами, поэтому у меня есть map <tab> <C-W><C-W>.vimrc. И все же я заметил, что это делает так, что Ctrl + I больше не ведет себя как Ctrl + I, а как Ctrl + W, Ctrl + W. Как я могу переназначить только, <tab>но нет <C-i>?

Ответы:


10

Из-за способа обработки ввода с клавиатуры, к сожалению, сегодня это вообще невозможно, даже в GVIM. Некоторые сочетания клавиш, такие как Ctrl+ не алфавитный, не могут быть сопоставлены, и Ctrl+ буква против Ctrl+ Shift+ буква не может быть различена. (Если ваш терминал не отправляет для него отдельный код termcap , чего большинство не делает.) В режиме вставки или командной строки попробуйте ввести комбинацию клавиш. Если ничего не происходит / вставлено, вы не можете использовать эту комбинацию клавиш. Это также относится к <Tab>/ <C-I>, <CR>/ <C-M>/ <Esc>/ <C-[>и т. Д. (Единственное исключение - <BS>/ <C-H>.) Это известная проблема и предмет различных обсуждений vim_dev и IRC-канала #vim.

Некоторые люди (прежде всего Пол ЛеоНерд Эванс) хотят это исправить (даже для консоли Vim в терминалах, которые поддерживают это), и выдвинули различные предложения, ср. http://groups.google.com/group/vim_dev/browse_thread/thread/626e83fa4588b32a/bfbcb22f37a8a1f8

Но на сегодняшний день никаких патчей или добровольцев еще не появилось, хотя многие выразили желание иметь это в будущем выпуске Vim 8.


1
была ли решена эта проблема с отображением / распознаванием кода ключа в Vim 8, как сейчас (2017 год)? Я обнаружил, что все еще могу воспроизвести пример Джона на моем Vim 8.0
llinfeng,

@llinfeng: нет, к сожалению, нет. Брэм в настоящее время работает над интеграцией терминала в Vim; похоже, что для этого используется библиотека, созданная Полом Эвансом, так что, возможно, в конечном итоге это также приведет к улучшению обработанных ключей. (Но это чистое предположение в настоящее время.)
Инго Каркат

0

Не все ярлыки возможны в Vim, особенно если он работает под терминалом. Я не рекомендую использовать ярлык для этой цели. Но альтернативное решение может быть следующим:

" 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>

Смотрите пример использования в https://github.com/eduardolucioac/groovim/blob/master/.vimrc

[] 'S

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.