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


12

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

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

編集:
明確に<a-left>するためにAlt+を意味しLeft Arrowます。
ここで重要な質問は、Vimのキーマッピングの観点Left Altとの違いは何Right Altですか?

回答:


14

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

もう1つのオプションは、Esc- [MyUniqueGarbageHereなど、特定のキーシーケンスを生成するためにRightAlt-Left Arrowを配置することです。これは確かに実行可能です。そして、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です。:set termcapvimで使用して、どの端末エントリが割り当てられているかを確認し、使用されていない一部の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にバインドし、そこから移動するように手配できます。お客様の要件をお知らせください。


これはgvimにも当てはまりますか?
グリフ

これは特に役立つことがわかりました。lxterminalを使用して、vimでAltキーをマップします。ターミナルで、Ctrl-Vを入力してから、目的のキーコンボ(Alt-Tなど)を入力すると、^ [t。マッピングを実行するために<At>の代わりに.vimrcでこれを使用し(^ [もちろん単一のエスケープ文字である)、完璧に実行しました。(^ [^ TはCtrl + Alt + Tも正しくバインドします)
elynnaie
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.