web-dev-qa-db-ja.com

Vimで左Altキーをマッピングしますか?

キーの組み合わせをマッピングできます Right Alt+Left Arrow<a-left>または<m-left>。しかし、私はマップすることができません Left Alt キー。

それを行う方法はありますか?

編集:
わかりやすくするために<a-left> 手段 Alt+Left Arrow
ここで重要な質問は、 Left Alt そして Right Alt Vimのキーマッピングの観点から?

12
Yogesh Arora

Vimで:help key-notationを実行すると、Vimが認識する修飾子は、shift、control、alt/meta(同義語として扱われる)、およびMacコマンドキーのみであることがわかります。 xmodmapを使用して、右のAltキーをVimが認識する新しい修飾子に簡単にマップできますが、おそらくこれらの修飾子は現在使用されていません。 (LinuxシステムでMacコマンドキー修飾子をVimが認識できるように表現できるかどうかはわかりません。)Xが認識する修飾子は他にもあります。Mod4、Hyperなどですが、Vimが勝つように見えます。それらを見るか、少なくともそれらをバインドすることはできません。

別のオプションは、RightAlt-左矢印が特定のキーシーケンスを生成するように調整することです。たとえば、Esc- [MyUniqueGarbageHere。これは確かに実行可能であり、左のAltキーがバインドされているのとは異なる任意のアクションにバインドするようにVimに指示できます。これの欠点は、RightAlt + Keyの組み合わせごとに個別に行う必要があることです。しかし、いくつかのキーに対してこれを実行したいだけの場合は、非常に実行可能です。

正確にどのように実装するかは、XでVimを使用するか、Linuxコンソールで使用するか、その他の環境で使用するかによって異なります。 Xでの使用について話していると仮定します。

  1. Xmodmapを使用して、RightAltをたとえばMod3にバインドします。 Xセッションの開始時にこれが1回実行されるように調整します。一部のディストリビューションには、xmodmapコマンドを含む特定の場所にファイルをロードする/ etc/X11/xinit/xinitrcファイルがすでに含まれています。

    xmodmap -e "remove Mod1 = Alt_R" -e "add Mod3 = Alt_R"
    
  2. ターミナルurxvtを使用します。これにより、Xresourcesタイプのファイルでキーバインディングを定義できます。 〜/ .config/Xresourcesでそれを行うことができます。私は〜/ .config/app-defaults/URxvtでそれを行います。そのファイルに次のような行を入れます(正確な構文は、どのファイルに入れるかによって異なります)。

    URxvt.keysym.Mod3-Left:    \033<RAlt-Left>
    

    新しいターミナルを起動し、ctrl-Vと入力してから、RightAlt + Leftと入力します。コマンドラインに文字^ [[<RAlt-Left>が表示されます。それは機能しますか?良い。

  3. 〜/ .vimrcに、次のように入力します。

    set t_Ff=^[<RAlt-Left>
    

ここでの「^ [」は単一のエスケープ文字です。他の各文字( '<'、 'R'、 'A'など)はそれ自体です。 vimの「リテラル」キープレフィックスとそれに続くエスケープを使用して、「^ [」を入力します(デフォルトで「リテラル」キーが何であるかを忘れています---おそらくctrl-Vもありますか?)t_Ffは単なる未使用の端末エントリです。もう1つはt_Fgです。 vimで:set termcapを使用して、割り当てられている端末エントリを確認し、使用されていないXXにはt_XXを使用できます。上記の.vimrc行に次の行を追加します。

    map <t_Ff> whatever-vim-keys-you-want-it-mapped-to
    map! <t_Ff> whatever-vim-keys-you-want-it-mapped-to

直接行うことも可能です。

    map ^[<RAlt-Left> whatever-vim-keys-you-want-it-mapped-to

ただし、アイドル状態の端末エントリを使用してはるかに確実に機能する手法を見つけました。

ここでは、LinuxやXなどを使用していると多くの仮定をしました。 urxvtとは異なるターミナルプログラムを使用している場合、これは、私が説明したことを実行するのに十分な強力なキーバインド手法を提供する場合と提供しない場合があります。エキゾチックでないキーを選択した場合でも、ここで説明したようなことができる場合があります。たとえば、RAlt-LeftをF21にバインドして、そこから移動するように調整できます。要件を教えてください。

14
dubiousjim