私は2つの異なるキーボードレイアウトを定期的に使用する(Programmers-DvorakとTurkish-F)、少し変わった位置にいます。これらのレイアウトはお互いにかなり異なり、私は1組の筋肉の記憶でvimに習熟することができるだけです。私はDvorakレイアウトのvimコマンドにはかなり熟練していますが、キーボードがトルコ語Fレイアウトの場合は、ほとんど使用できません。残念ながら、私は定期的に英語とトルコ語の両方、さらには混合言語でファイルを編集しています。私の能力は、それぞれのキーボードレイアウトでどちらかの言語をうまく入力できるほどですが、私の脳はそれらをクロスワイヤして、Dvorakレイアウトからトルコ語で単語を数文字入力することを拒否します。
Xorgのレイアウトを変更するための2つのキーと敬礼のバインディングがありますが、混合言語ファイルを編集する場合、vimで厄介なワークフローが残ります。
<vim commands…>i<switch to tr>…content…<escape><switch to en><vim commands…>
これを次のように短縮できるようにしたいと思います。
<vim commands…><leader>i…content…<escape><vim commands…>
...を使用すると、システムのキーボードレイアウトを変更せずにトルコ語のレイアウトをエミュレートするために<leader>i
一連の:imap
値が設定されます。同時に、i
追加モードなしで挿入モードに切り替わり:imap
ます。値自体は簡単です。次のようなアルファベットのマッピングが必要です。
:imap a u
:imap A U
:imap o i
:imap O İ
"etc.
質問ですが、どのようにセットアップ2つのインサートモードへ、マッピングの束を除いて同一である、そしてどのように私はこれらのモードトリガすることができます1つのノーマル挿入モードとモードのインサート1つの擬似<leader>i
、<leader>a
など?
:imap
は、それがリモートのsshセッションでも、$DISPLAY
そうでなければ設定されていない場合でも機能するということです。
InsertEnter
とInsertLeave
autocmdがあります。具体的には、InsertLeave
トルコ語であるかどうかを確認し、トルコ語である場合は、Dvorakに切り替えてフラグを設定し、挿入モードに戻ったときに、挿入モードに戻ったときに再度トルコ語に切り替えます。