如何在vim中捕获shift-tab

我想使用shift-tab进行自动完成并直观地移动代码块.我一直指的是
Make_Shift-Tab_work.该链接讨论了映射^ [[Z到shift-tab.但是我没有得到^ [[Z当我按下shift-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来查看当我按下shift-tab时X收到的内容.但是我的系统上没有xev.

有没有其他方法我可以捕获vim中的shift-tab

最佳答案 该链接专门讨论了在插入模式下按Ctrl vShift Tab时获取^ [[Z].如果您不使用Ctrl v,那么Vim的行为就像按Tab键一样.

让Vim识别< S-Tab>的最简单方法是直接将t_kB选项设置为终端发送的转义序列,而不是弄乱地图.

作为快速测试,请在运行的Vim中尝试:

:set t_kB=Ctrl+vEsc[Z
:imap <S-Tab> foo

现在,当您在插入模式下按Shift键时,应插入foo.如果可行,您可以通过将以下内容添加到vimrc来使更改永久化.

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