Как захватить shift-tab в vim - PullRequest
4 голосов
/ 30 апреля 2010

Я хочу использовать shift-tab для автозаполнения и визуального сдвига кодовых блоков. Я имел в виду Make_Shift-Tab_work . Эта ссылка говорит о сопоставлении ^[[Z с shift-tab. Но я не получаю ^[[Z, когда нажимаю shift-tab. я просто получаю нормальный tab в этом случае.

Затем говорится об использовании xmodmap -pke | grep 'Tab' для сопоставления клавиш табуляции. Согласно этому вывод должен быть

keycode 23 = Tab
or
keycode 23 = Tab ISO_Left_Tab

Однако я получаю

keycode  22 = Tab KP_Tab

если я использую xmodmap -e 'keycode 22 = Tab ISO_Left_Tab' и после этого xmodmap -pke | grep 'Tab', я все равно получаю

keycode  22 = Tab KP_Tab

Это означает, что запуск xmodmap -e 'keycode 22 = Tab ISO_Left_Tab' не имеет никакого эффекта.

В конце ссылка упоминает, используя xev, чтобы увидеть, что X получает, когда я нажимаю shift-tab. Но у меня нет xev в моей системе.

Есть ли другой способ, которым я могу захватить shift-tab в vim

1 Ответ

2 голосов
/ 30 апреля 2010

Ссылка специально говорит о получении ^[[Z при нажатии Ctrl + v Shift + Tab в режиме вставки. Если вы отключите Ctrl + v , то Vim будет вести себя так же, как если бы вы нажали Tab .

Самый простой способ заставить Vim распознавать <S-Tab>, это напрямую установить опцию t_kB на escape-последовательность, которую посылает ваш терминал, вместо того, чтобы связываться с картами.

В качестве быстрого теста попробуйте это в работающем Vim:

: установить t_kB = Ctrl + v Esc [Z
: imap foo

Теперь, когда вы нажимаете Shift + Tab в режиме вставки, foo должен быть вставлен. Если это сработало, вы можете сделать изменение постоянным, добавив следующее в ваш vimrc.

exe 'set t_kB=' . nr2char(27) . '[Z'
...