【问题标题】:Vim key maps act weird in urxvtVim 键映射在 urxvt 中表现得很奇怪
【发布时间】:2017-06-01 05:05:36
【问题描述】:

最近我开始使用并喜欢urxvt,因为它有大量的选项和透明功能。

很遗憾,Vim 中的某些键映射在 urxvt 中不起作用。

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

这些移动命令在xterm 中确实可以正常工作,但它们在urxvt 中拒绝工作:它们切换到插入模式并粘贴abcd 作为输入进入我的 vim。

为什么会这样?

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

如何让urxvt 正确映射键?

【问题讨论】:

    标签: vim terminal zsh xterm rxvt


    【解决方案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)还有很多,很常用的:ctrl-f, c-h, c-w, a-w,c-b,c-u,c-k,a-. etc .....也是人不应该忘记c-xc-e

    【讨论】:

      【解决方案2】:

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

      您可以使用 urxvt 发送的转义序列,也可以使用keysym 功能将 urxvt 配置为发送类似的转义序列。此功能由 rxvt 引入,并通过 urxvt 进行了扩展,以允许您指定修饰符(移位、控制等),您可能希望限制 keysym 应用于:

      keysym.sym: 字符串
      编译装饰:将字符串与keysym sym关联。介入的资源名称keysym。不能省略。

      sym的格式为“(modifiers-)key”,其中修饰符可以是ISOLevel3、AppKeypad、Control、NumLock、Shift、Meta、Lock、Mod1、Mod2、Mod3的任意组合, Mod4、Mod5 和缩写 IKCN , S, M, A, L, @987654333 @2345

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-04
        • 1970-01-01
        • 2014-12-12
        相关资源
        最近更新 更多