2010-04-30 3 views
4

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

Затем он рассказывает об использовании 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

+0

«xmodmap» ничего не печатает? Любой код ошибки после запуска 'xmodmap'? Какая ОС (какой дистрибутив)? – ZyX

+1

'xmodmap -pke | grep 'Tab'' печатает 'keycode 22 = Tab KP_Tab'. Я использую SunOS 5.10 –

+0

'xev' обычно входит в пакет X utils.Название конкретного пакета будет меняться в зависимости от вашего дистрибутива Linux, но это 'x11-utils' на Debian/Ubuntu и' xorg-x11-utils' на Fedora/RH. – jamessan

ответ

2

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

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

Как быстро тест, попробуйте это в запущенном Vim:

: набор t_kB = Ctrl + vEsc [Z
: IMAP < S-Tab > Foo

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

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

, даже после этого 'Shift + Tab' ведет себя точно так же, как' tab' –

+0

Фактически я не уверен, что escape-последовательность, которую мой терминал отправляет, когда я нажимаю ' смещаться-tab'. Есть ли способ проверить, что –

+0

Да, вот что '' должно быть. Вам не обязательно делать это в Виме. Из вашей оболочки запустите 'cat', а затем нажмите' ', и вы должны увидеть, что генерирует ваш терминал для' '. – jamessan

Смежные вопросы