3

Steve Loshによるこの記事はラウンドを行っているようです。つまり、Caps LockをF19に再マップし、システムレベルでF19をShift-Command-Ctrl-Altに再マップすることになりました。私自身のキーボードショートカットの名前空間全体。

問題は、VimのエスケープキーとしてCapsLockを使用して楽しんだことです。試し:map <M-C-D-S> <esc>ましたが、ソーシング時にCapsLockを押しても何も起こりません。Vimは実際のキーが修飾子で押されることを期待しているからだと思います。

私の質問は:VimにShift-Cmd-Ctrl-Altをエスケープとして読み取らせることは可能ですか?

4

2 に答える 2

4

いいえ、4つの修飾子をマップすることはできません。3つでも2つでもない。そして、まあ…1つでもありません。

「修飾子」は、理由から「修飾子」と呼ばれます。通常のキーとともに、その意味を「変更」するために使用されます。Shift、Alt、Cmd、Ctrlキーはそれ自体では何もしませんし、Vimは当然のことながら、キーを押したときにそれ以上キーが押されるのを待つだけです。

さらに、Vimの入力メカニズムは少し「古い学校」であり、おそらくそれが実行される可能性のある複数のプラットフォーム間で一貫性を保つためです。通常のキーで複数の修飾子を登録することはありません。つまり、端末がそれらを使い果たしていない場合(それはそうします)、あなたはまたはしかできませ<C-…&gt;<S-…&gt;。Altキーは、それを処理するターミナルエミュレーターの数と、CmdキーがMac専用であり、とにかくMacVimでのみ機能するため、実際には機能するソリューションではありません。

その時点で、4つのキーをマッシュアップして1つのキーのみの機能をエミュレートする準備ができている場合(それ自体はかなりばかげています)<C-c>、AFAIKがどこでも機能するものを使用することもできます。あなたの左手はあなたに感謝します。

于 2012-11-28T20:11:52.293 に答える
4

私の元の質問はXY問題として苦しんでいます。

あなたはXをやりたいと思っています、そしてあなたはYがそうするための最良の方法だと思います。Xについて尋ねる代わりに、Yについて尋ねます。

私はVimに(他のクレイジーなシステムレベルの変更を維持しながら)読みたいと思ったので、VimにCaps LockEscない機能について尋ねました。

結局のところ、上記の回答は素晴らしく、的確で、有益でしたが、私は「いいえ」と言われるのは好きではありません。そして、私は間違った問題空間で答えを探していました。

OPのリンクで説明されているアプリケーションの1つであるKeyRemap4MacBookは、非常に拡張性があります。ドキュメントにはまだまだ多くの要望がありますが、元の質問に沿って解決策をまとめることができました。これは、「vimのマップのもの」という元のトピックとは大きく異なります。そのため、申し訳ありませんが、これを必要とする1人の貧しい魂のために、これを後世に残したいと思います。

簡単に言えば、前の記事では、これを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 に答える