如何将菜单键(“应用程序密钥”)映射到vim中的Escape键?

时间:2010-11-24 20:55:43

标签: vim menu map escaping key

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

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

3 个答案:

答案 0 :(得分:3)

我认为您无法将Vim配置为关注菜单键, 但根据您的系统,有多种方法可以将菜单键转换为转义键。

如果你在Linux上使用X11:

  • 命令xmodmap -e 'keycode 135 = Escape'会将您的菜单键变为当前会话的退出键,但不是永久性的。要在Gnome下使其永久化,您可以尝试在系统→首选项→启动应用程序下添加它。
  • 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

答案 1 :(得分:0)

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

capslock 反弹到另外的 ctrl 时,这更容易。

答案 2 :(得分:0)

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

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

(或imap <Esc>[29~ <Esc><Esc>,如果您不希望它像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<Esc>语法中是~/.Xresources。)