Vim:将Shift-Cmd-Opt-Ctrl重新映射为Escape

时间:2012-11-28 19:24:02

标签: vim

看起来像史蒂夫·洛什this article一直在进行巡视,简而言之,它让我将Caps Lock重新映射到F19,在系统级别,将F19重新映射到Shift-Command-Ctrl- Alt,从而为我自己的键盘快捷键提供了一个完整的命名空间。

问题是我喜欢使用Caps Lock作为我在Vim中的转义键。 我尝试了:map <M-C-D-S> <esc>,但在采购时,击中大写锁定并没有做任何事情。我猜这是因为Vim期望用修饰符按下实际的键。

我的问题是:是否可以让Vim将Shift-Cmd-Ctrl-Alt作为Escape读取?

2 个答案:

答案 0 :(得分:4)

不,你不能映射四个修饰符。甚至不是三个,甚至不是两个。而且,嗯......甚至没有一个。

“修饰符”被称为“修饰符”,原因是:它们与普通键一起用于“修改”它们的含义。 Shift,Alt,Cmd和Ctrl键本身不做任何事情,Vim正确地做任何事情,但是当你按下它们时等待进一步的按键。

另外,Vim的输入机制有点“老派”,很可能是为了让它在可能运行的多个平台上保持一致。它不会使用普通键注册多个修饰符。这意味着,如果终端没有吃掉它(它确实如此),你只能<C-…><S-…>。 Alt键实际上不是一个可行的解决方案,因为有多少终端仿真器处理它,而且Cmd键只适用于Mac,并且只能在MacVim中使用。

此时,如果您准备将四个密钥混合在一起以模拟仅一个密钥的功能(这本身就相当愚蠢),您可以简单地使用{{1}其中,AFAIK,无处不在。你的左手会感谢你。

答案 1 :(得分:4)

我原来的问题是XY Problem

  

你想做X,你认为Y是最好的方式。你不是问X,而是询问Y.

我想让Vim读取大写锁定作为 Esc (同时仍然保持其他疯狂的系统级修改),所以我询问了Vim没有的功能有

事实证明,虽然上面提供的答案非常好,有点且内容丰富,但我不喜欢被告知'不'。而我正在错误的问题空间中寻找答案。

OP的链接KeyRemap4MacBook中讨论的应用程序之一是高度可扩展的。文档还有很多不足之处,但我能够根据原来的问题拼凑出一个解决方案。这与“地图中的东西”的原始主题大相径庭,为此我道歉,但我希望将其留给后代,以便为需要这个的一个可怜的灵魂留下。

简单地说,上一篇文章建议将其添加到KR4MB的'private.xml'文件中:

<item>
    <name>Remap Caps Lock to Hyper</name>
    <appendix>OS X doesn't have a Hyper. This maps Left Control to Control + Shift + Option + Command.</appendix>

    <identifier>caps_lock_to_hyper</identifier>

    <autogen>
        --KeyToKey--
        KeyCode::F19,

        KeyCode::COMMAND_L,
        ModifierFlag::OPTION_L | ModifierFlag::SHIFT_L | ModifierFlag::CONTROL_L
    </autogen>
</item>

(<{3}} 大写锁定

这可以改为:

<item>
  <name>Caps Lock to Hyper OR Escape</name>
  <appendix>Caps Lock should be remapped to F19 (80) in PCKBH</appendix>
  <appendix>This remaps F19 to "Hyper" aka Cmd-Shift-Ctrl-Alt...</appendix>
  <appendix>...but, when pressed alone, F19 sends only escape</appendix>
  <identifier>remap.hyper2hyper_escape</identifier>
  <autogen>
      --KeyOverlaidModifier-- 
      KeyCode::F19, 

      KeyCode::COMMAND_L,
      ModifierFlag::OPTION_L | ModifierFlag::SHIFT_L | ModifierFlag::CONTROL_L, 

      KeyCode::ESCAPE
  </autogen>
</item>

这告诉系统每当单独按下 Caps Lock 时,它实际上是 Esc ,但是如果它与任何其他键一起被按下,那么 F19 < / KBD>