我想将ctrl-tab映射到:tabn,并将ctrl-shift-tab映射到:tabp。
我在Windows XP中使用gVim,但在Ubuntu 9.10中将其移动到我的.vimrc并且它不起作用(vim 7.2)。
这是我.vimrc的相关部分:
nmap <C-Tab> :tabn<CR>
nmap <C-S-Tab> :tabp<CR>
nmap <C-t> :tabnew<CR>
<C-t>
工作正常,因此映射ctrl键似乎不是问题。我真的不知道从哪里开始!这可能会出现什么问题,考虑到它在Windows下运行良好?
更多信息:我正在运行Ubuntu 9.10服务器,其中安装了xorg
和fluxbox
。我正在使用xterm
作为我的终端。
Ctrl-tab映射在fluxbox中工作:我可以在我的窗口管理器中成功映射ctrl-tab和ctrl-shift-tab;如果我开始标记我的xterms,我可以按预期循环浏览这些标签。我不确定这意味着什么,但我认为问题是不是窗口管理器/ xorg问题。
键似乎没有映射到别的东西,并且可以一起成功识别。
答案:这是一个xterm
问题 - 它不会拦截并发送ctrl-tab
的唯一键码。有关详细信息,请参阅下面的完整答案。
答案 0 :(得分:31)
这绝对是一个终极问题。
显然xterm和许多其他终端模拟器默认情况下不拦截ctrl-tab,只是发送一个标签信号。这个Vim wiki page表明ctrl-tab不适用于xterm,Eterm和aterm。还有这个Arch linux form post声称这是一个终端问题。
可以通过将this blog post中的信息与此vim wiki for mapping keycodes相结合来找到解决方案。这个要点是你需要配置xterm来拦截并在.Xresources
文件中为ctrl-tab和ctrl-shift-tab发送一个唯一的代码,然后用一些时髦的东西将其破解到你的.vimrc
映射。
长话短说是很难做到(仍然没有在这里工作)因为xterm和vim都需要被欺骗去做。我个人会继续使用另一个映射...这个问题是一个严肃的时间傻瓜,我不认为值得努力让它工作!
感谢帮助人员。
答案 1 :(得分:2)
我使用了来自@nfm的答案的博客和维基帖子并解决了它:
将它放在.Xresources
文件中(在这种情况下可以复制粘贴):
xterm*VT100.Translations: #override \
Ctrl ~Shift <Key>Tab: string(0x1b) string("[27;5;9~") \n\
Ctrl Shift <Key>Tab: string(0x1b) string("[27;6;9~")
然后执行cd ; xrdb .Xresources
并重新启动xterm。
将其放入.vimrc
:
<强> !!重要 - 而不是XXXX,您必须键入 CTRL-V ,然后 Esc 或复制粘贴整个文本并运行{{ 1}}是可复制的(用%s/\(set <F1[34]>=\)XXXX/\=submatch(1) . "\33"/g
插入)。
<CTRL-R> +
然后重启vim。
完成。
答案 2 :(得分:0)
如果您使用的是Ubuntu,则可能会启用Compiz。
我无法确定,但您应该看一下Compiz扩展,以及它们是否定义了该快捷方式。我有过一次类似的问题,不是用vim,而是用。还是。
它也可能是X服务器拦截一些击键(例如:xbindkeys
)。
答案 3 :(得分:0)
就我而言,
我如下解决了rxvt-unicode(urxvt,v9.22),
terminal (.Xresource)
URxvt.keysym.Control-Tab: \033[27;5;9~
vim v8.0 (.vimrc)
map <Esc>[27;5;9~ :tabnext<CR>
祝你好运!