我的vimrc中的映射<c-tab>在Ubuntu </c-tab>中失败

时间:2010-04-21 21:40:14

标签: vim keyboard-shortcuts keymapping

我想将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服务器,其中安装了xorgfluxbox。我正在使用xterm作为我的终端。

Ctrl-tab映射在fluxbox中工作:可以在我的窗口管理器中成功映射ctrl-tab和ctrl-shift-tab;如果我开始标记我的xterms,我可以按预期循环浏览这些标签。我不确定这意味着什么,但我认为问题是不是窗口管理器/ xorg问题。

键似乎没有映射到别的东西,并且可以一起成功识别。

答案:这是一个xterm问题 - 它不会拦截并发送ctrl-tab的唯一键码。有关详细信息,请参阅下面的完整答案。

4 个答案:

答案 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>

祝你好运!

相关问题