Как отключить TAB и не сделать Ctrl-I недействительным в VIM

Когда я использую vim в обычном режиме, я часто нажимаю клавишу TAB случайно, клавиша TAB делает то же самое, что и Ctrl-I по умолчанию. Я хочу сделать ключ TAB ничего не делать, поэтому я помещаю эту строку в файл vimrc:

nmap <TAB> :echo<CR> 

Таким образом, ключ TAB ничего не сделает, но это сделало ключ Ctrl-я ничего не делаю. Итак, как сделать TAB ничего не делать, а Ctrl-I работает так же, как и раньше в vim (в обычном режиме)?

Ответы

Ответ 1

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

Некоторые люди (прежде всего Пол ЛевНерд Эванс) хотят это исправить (даже для консоли Vim в терминалах, которые поддерживают это), и предложили различные предложения.

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

Ответ 2

Я бы посоветовал сделать <TAB> что-то полезное:

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

таким образом вы можете использовать tab для оконных операций. Конечно, с этим вы не можете иметь поведение ctrl-i. Для этого: ,i:

nnoremap ,i <C-I>

Ответ 3

Я обнаружил, что ctrl-tab работает по умолчанию ctrl-i, когда tab переназначается.

Работает в macvim. Я не проверял других vims.