この問題は、keymap
オプションの助けを借りて解決することができます。これにより、テキスト入力を必要とするモードで使用する代替キーボードマッピングを定義できます。
挿入、置換、またはコマンドラインモード(通常モードではない)でデフォルトキーマップと代替キーマップを切り替えるには、
Ctrl+ ^(Ctrl+ 6)を使用します。キーマップの変更は、テキスト入力にのみ影響します。通常モードでのキーボードの動作は、現在のキーマップ設定に関係なく同じままです。ギリシャ語での挿入モードの書き込みを終了し、別のキーボードレイアウトに切り替えることなく、すぐに通常モードのキーバインドを使用できます。その後、挿入モードに戻るか、たとえば、と入力して検索を開始する /
と、Vimはキーマップをギリシャ語に自動的に戻します。
これらのテキスト入力モードで使用されている現在のキーマップは、他のモードに切り替える間で記憶されます。この動作の唯一の例外は、常にデフォルトのキーマップで開始するコマンドラインモードの場合です。これは、ほとんどの場合、Exコマンド(ASCII)を入力する必要があるためです。オプションを設定するkeymap
と、ユーザーはVimで作業し、システムのキーボードレイアウトを英語に設定したまま、Vimのキーマップを(システム全体のレイアウトスイッチではなく)Ctrl+で切り替えることになります。^
たとえば、UTF-8ギリシャ語のキーマップを永続的に有効にするには、ファイルに次の行を追加し.vimrc
ます。
:set keymap=greek_utf-8
多数の言語セット用に事前定義されたキーマップが多数あり、を使用してVim自体でそれらすべてを参照できます:e $VIMRUNTIME/keymap
。通常、1つの言語には、文字エンコードのみが異なるいくつかのキーマップが用意されているため、誰でも自分の構成に適したキーマップを選択できます。
また、以下のオプションを設定して、挿入モードおよび検索パターンの入力時にキーマップをデフォルトで有効にするかどうかを指定することをお勧めします。
:set iminsert=0 imsearch=-1
詳細な説明については、:help iminsert
およびを参照してください。:help imsearch
特別な言語モードもあります。私が間違っていなければ、以前にVimで導入されましたkeymap
。keymap
オプションに保存する長い文字列のキーボードのキーに対応する文字のペアを手動で指定することで提供されるのと同様の動作を実現できlangmap
ます。個人的には、私の母国語も英語ではありませんが、keymap
代わりにこの方法を使用することをお勧めします(そしてお勧めします)。
結論として、上記のすべては、Vimがキーマップを持っている(または持つように構成できる)他の言語にも等しく適用できることを強調する必要があります。
私が最初にこの回答をしたときから尋ねられた同様の質問「<ahref="https://stackoverflow.com/q/8015231/254635">キーボードレイアウトの「不快感」」に対する私の回答も参照してください。