Vim键映射在urxvt中表现得很奇怪

时间:2017-01-17 08:14:16

标签: vim terminal zsh xterm rxvt

最近我开始使用&由于其广泛的选项和透明度功能,我们赞成urxvt

不幸的是,Vim中的某些键映射在urxvt中无效。

例如,我已将Ctrl + Up/DownShift + Up/Down分别映射到5个上/下移动10行或Ctrl + Left/Right到1个字左/右移动。

这些移动命令在xterm中没有任何问题,但它们拒绝在urxvt中工作:它们切换到插入模式并粘贴ab,{ {1}}或c作为我的vim的输入。

为什么会这样?

我还使用d作为我的shell并映射zsh以在Ctrl + Left/Right中向左/向右移动1个字:这也停止在zsh中工作(同时仍在工作urxvt)。

如何让xterm正确映射密钥?

2 个答案:

答案 0 :(得分:4)

从问题描述中你可能忽略了urxvt中的键定义与xterm不同的事实。除非您专门配置urxvt,否则当您使用shift,control,alt修改它们时,其特殊键(光标键和键盘键)会发送不同于xterm的转义序列。

您可以使用urxvt发送的转义序列,也可以使用keysym功能配置urxvt以发送可比较的转义序列。此功能由rxvt引入,并使用urxvt进行扩展,以允许您指定修饰符(shift,control等),您可能希望限制keysym应用于:

  

keysym。 sym string
  编译附件:将字符串与keysym sym相关联。介入的资源名称keysym。不能省略。

     

sym 的格式是“(修饰符 - )键”,其中修饰符可以是ISOLevel3,AppKeypad,Control,NumLock,Shift,Meta,Lock,Mod1,Mod2,Mod3的任意组合, Mod4,Mod5和缩写 I K C { {1}} N S M A L 1 2 3 4

“编译褶边”暗示它是一个可选功能。然而,大多数打包者似乎打开了所有选项(除非他们发生冲突)。所以它可能对你有用。

在ncurses FAQ How can I use shift- or control-modifiers? 中概述了(转义序列的)主题(vim顺便说一下,使用 ncurses或修饰符信息在终端数据库中 - 它是 termcap 应用程序 - 但这是一个不同的问题。)

答案 1 :(得分:1)

在vim中,您可以:

set t_ku=^[OA
set t_kd=^[OB
set t_kr=^[OC
set t_kl=^[OD

(要获得^[OA,请按ctrl-v,然后按up

我也使用urxvt,因为它很快,我不使用透明功能。在urxvt中,您可能需要设置选项keysym.sym: action阅读手册页以获取更多详细信息。

建议

  • 如果您使用vim,请使用vim动作,ctrl-U/D/F/BwWeEbB..。您根本不需要箭头键。例如。在我的键盘上,按箭头键我必须按一个额外的Fn键..太贵了,我的手指必须离开本垒打。

  • 在终端中,我建议您习惯于emacs-binding编辑命令行,您的单词跳转将是:alt-b (back) and alt-f(forward)还有更多,非常常见的使用:{{1也不应该忘记ctrl-f, c-h, c-w, a-w,c-b,c-u,c-k,a-. etc .....