3

似乎Steve Losh 的这篇文章一直在流传,简而言之,它使我将 Caps Lock 重新映射到 F19,并在系统级别将 F19 重新映射到 Shift-Command-Ctrl-Alt,从而给了我一个我自己的键盘快捷键的整个命名空间。

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

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

4

2 回答 2

4

不,您不能映射四个修饰符。连三个都没有,连两个都没有。而且,嗯……甚至没有。

“修饰符”被称为“修饰符”是有原因的:它们与普通键一起使用以“修改”它们的含义。Shift、Alt、Cmd 和 Ctrl 键本身不做任何事情,而 Vim 正确地什么也不做,只是在您按下它们时等待进一步的按键操作。

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

那时,如果您准备将四个键组合在一起以模拟仅一个键的功能(这本身就很愚蠢),那么您不妨简单地使用<C-c>它,AFAIK,在任何地方都可以使用。你的左手会感谢你。

于 2012-11-28T20:11:52.293 回答
4

我最初的问题是XY Problem

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

我想让 Vim 被理解Caps LockEsc(同时仍然保持其他疯狂的系统级修改),所以我询问了 Vim 没有的功能。

事实证明,虽然上面提供的答案很棒,而且内容丰富,但我只是不喜欢被告知“不”。我在错误的问题空间中寻找答案。

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

简单来说,上一篇文章建议将这个添加到 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>

稍作修改Caps Lock

这可以改为:

<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

于 2012-11-29T08:37:41.737 回答