如何在vim中捕获shift-tab

时间:2010-04-30 14:58:48

标签: vim keyboard x11 xterm sunos

我想使用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来查看当我按Xshift-tab收到的内容。但我的系统上没有xev

还有其他方法我可以在vim中捕获shift-tab

1 个答案:

答案 0 :(得分:2)

该链接特别谈到按 Ctrl + v Shift + Tab ^[[Z >在插入模式下。如果你不使用 Ctrl + v ,那么Vim的行为就像按下 Tab 一样。

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

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

  

:设置t_kB = Ctrl + v Esc [Z
  :imap&lt; S-Tab&gt; FOO

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

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