【问题标题】:How to map Menu key ("Application key") to Escape key in vim?如何将菜单键(“应用程序键”)映射到 vim 中的 Escape 键?
【发布时间】:2010-11-24 20:55:42
【问题描述】:

我认为使用 Menu 键退出 vim 的插入模式会是一件很棒的事情。使用 Super 键也很好,但我不确定是否可能,因为 Super 键是修饰符。

无论如何,我找不到与此相关的任何内容。寻求您的帮助并提前致谢!

【问题讨论】:

标签: vim menu map escaping key


【解决方案1】:

我不认为有任何方法可以配置 Vim 来关注菜单键, 但是根据您的系统,有多种方法可以将 Menu 键变成 Escape 键。

如果您在 Linux 上使用 X11:

  • 命令xmodmap -e 'keycode 135 = Escape' 会将您的菜单键变成当前会话的退出键,但不是永久性的。要使其在 Gnome 下永久生效,您可以尝试在 System → Preferences → Startup Applications 下添加它。
  • xkeycaps 程序将为您提供用于类似重新映射的 GUI。

更多信息:

http://46dogs.blogspot.com/2008/05/remap-keys-in-ubuntu-804-hardy-heron.html

http://ubuntuforums.org/archive/index.php/t-106209.html

【讨论】:

    【解决方案2】:

    我还没有找到在 gVim 中映射它的方法,但是我能够通过以下方法成功地将菜单键映射到 urxvt+screen+vim 堆栈中:

    1. 在终端中,键入 Ctrl+v 并按 Menu。这映射到 Zsh 和基于 Readline 的工具(如 Bash)中的 quoted-insert 函数。
    2. 它将在提示符处生成类似^[[29~ 的转义序列。 (最初的^[ 必须翻译成<Esc> 才能在.vimrc 中使用。)
    3. 打开.vimrc 并添加如下一行:
    imap <Esc>[29~ <Esc>
    

    (或imap &lt;Esc&gt;[29~ &lt;Esc&gt;&lt;Esc&gt;,如果您不希望它像 Escape 键那样等待进一步的输入。)

    请注意,并非所有键都可以从 Ctrl+v 返回可用的内容。这是终端仿真器的限制,可以通过重新映射密钥来解决。您可以在终端模拟器级别而不是所有 X 应用程序级别上执行此操作。

    例如,对于urxvt,我必须将以下行添加到~/.Xresources 并运行xrdb -merge ~/.Xresources 来应用它们:

    ! Unbreak zsh keys in URxvt
    URxvt*keysym.Home: \033[1~
    URxvt*keysym.End: \033[4~
    

    \033~/.Xresources 语法中是&lt;Esc&gt;。)

    【讨论】:

      【解决方案3】:

      只需尝试使用 ctrl+[ 而不是绑定另一个键。顺便说一句,这种组合是 vim 中的标准组合。

      当将 capslock 反弹到额外的 ctrl 时,这会更容易。

      【讨论】:

        猜你喜欢
        • 2012-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-24
        • 2020-06-17
        • 1970-01-01
        • 2011-03-22
        • 1970-01-01
        相关资源
        最近更新 更多