How to capture shift-tab in vim
I want to use shift-tab for auto completion and shifting code blocks visually. I have been referring to Make_Shift-Tab_work . That link talks about mapping ^[[Z to shift-tab . But i don't get ^[[Z when i press s开发者_高级运维hift-tab. i just get a normal tab in that case.
It then talks about using xmodmap -pke | grep 'Tab' to map tab keys. According to that the output should be
keycode 23 = Tab
or
keycode 23 = Tab ISO_Left_Tab
However i get
keycode 22 = Tab KP_Tab
if i use xmodmap -e 'keycode 22 = Tab ISO_Left_Tab' and after that xmodmap -pke | grep 'Tab', I still get
keycode 22 = Tab KP_Tab
This means running xmodmap -e 'keycode 22 = Tab ISO_Left_Tab' has no effect.
In the end the link mentions using xev to see what X recieves when i press shift-tab. But i dont have xev on my system.
Is there any other way i can capture shift-tab in vim
The link talks specifically about getting ^[[Z when you press Ctrl+vShift+Tab in insert mode. If you leave off the Ctrl+v, then Vim will behave just as if you pressed Tab.
The easiest way to make Vim recognize <S-Tab>, is to directly set the t_kB option to the escape sequence your terminal sends, instead of messing with maps.
As a quick test, try this in a running Vim:
:set t_kB=Ctrl+vEsc[Z
:imap <S-Tab> foo
Now when you press Shift+Tab in insert mode, foo should be inserted. If that worked, you can make the change permanent by adding the following to your vimrc.
exe 'set t_kB=' . nr2char(27) . '[Z'
加载中,请稍侯......
精彩评论