如何在vim中捕获换档选项卡
我想使用如何在vim中捕获换档选项卡,vim,keyboard,x11,xterm,sunos,Vim,Keyboard,X11,Xterm,Sunos,我想使用shift选项卡自动完成并直观地移动代码块。我一直在说。该链接讨论了映射^[[Z到shift tab。但是当我按下shift tab时,我没有得到^[[Z。在这种情况下,我只得到一个正常的tab 然后讨论如何使用xmodmap-pke | grep'Tab'映射选项卡键 keycode 23 = Tab or keycode 23 = Tab ISO_Left_Tab 不管我得到什么 keycode 22 = Tab KP_Tab 如果我使用xmodmap-e'keycode22=
shift选项卡
自动完成并直观地移动代码块。我一直在说。该链接讨论了映射^[[Z
到shift tab
。但是当我按下shift tab
时,我没有得到^[[Z
。在这种情况下,我只得到一个正常的tab
然后讨论如何使用
xmodmap-pke | grep'Tab'
映射选项卡键
keycode 23 = Tab
or
keycode 23 = Tab ISO_Left_Tab
不管我得到什么
keycode 22 = Tab KP_Tab
如果我使用
xmodmap-e'keycode22=Tab ISO_Left_Tab'
,然后使用xmodmap-pke | grep'Tab'
,我仍然会得到
keycode 22 = Tab KP_Tab
这意味着运行xmodmap-e'keycode22=Tab ISO\u Left\u Tab'
没有效果
最后,链接提到使用xev
查看当我按下shift tab
时X
接收到什么。但是我的系统上没有xev
有没有其他方法可以在vim中捕获shift tab?该链接专门讨论在插入模式下按下Ctrl+vShift+tab时获取
^[[Z
。如果关闭Ctrl+v,vim的行为将与按下tab一样
让Vim识别
的最简单方法是直接将t_kB
选项设置为终端发送的转义序列,而不是干扰映射
作为快速测试,请在运行的Vim中尝试以下操作:
:设置t_kB=Ctrl+vEsc[Z:imap foo 现在,当您在插入模式下按Shift+Tab键时,应该插入
foo
。如果这样做有效,您可以将以下内容添加到vimrc中,使更改永久化
exe 'set t_kB=' . nr2char(27) . '[Z'
xmodmap
是否不打印任何内容?运行xmodmap
后是否有错误代码?什么操作系统(什么发行版)?xmodmap-pke | grep'Tab'
printskeycode 22=Tab KP\u Tab
。我使用的是SunOS 5.10xev
通常包含在一个X utils包中。具体的包名会根据您的Linux发行版而有所不同,但在Debian/Ubuntu上是x11 utils
,在Fedora/RH上是xorg-x11-utils
。它也是知道您正在使用哪个终端很有用。类似地,在xterm中尝试一下,看看它是否在那里工作。我的意思是xmodmap-e…
打印一些东西吗?并检查xmodmap-e'keycode22=Tab T'
是否工作。它必须不回显任何内容并将
映射到T
。即使这样做Shift+Tab它就像一个选项卡
实际上,当我按下shift tab
时,我不确定我的终端发送的转义序列是什么。有什么方法可以检查吗?是的,这就是
应该做的。你不必在Vim中做。在shell中,运行cat
,然后按下
,你应该看到你的终端是什么al为
生成。什么是egrep'XK_[a-zA-Z_]*Tab'/usr/include/X11/keysymdef.h
显示?#定义XK_选项卡0xFF09#定义XK_KP_选项卡0xFF89#定义XK_ISO u左选项卡0xFE20#定义XK_选项卡0x12d7#