32

私はVimにPythonアプリのコーディングを真剣に試みています。しかし、Vimは非常に柔軟であることが証明されているので、弁護士や法律文書を書くための仕事でメインの編集者として使用することを考えていました。問題は、私の母国語が英語ではなくギリシャ語であるということです。そこで、英語とギリシャ語のキーボードレイアウトを変更するためにAlt+をマッピングしました。Shift

私が経験している問題は、Vimコマンドを入力するたびに(英語に戻るために)Alt+を押さなければならないということです。Shiftしたがって、ドキュメントを入力するときはAlt+ 、 Vimコマンドを入力するときは+です。これは、少なくとも使用速度の点で、Vimを使用する目的を無効にします。ShiftAltShift

だから私の質問は簡単です:非ラテン語(ギリシャ語など)で書くときにVimコマンドを入力するためだけにこれらの頻繁なAlt+キーボードレイアウトの変更を回避する方法はありますか?Shift

4

1 に答える 1

44

この問題は、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で導入されましたkeymapkeymapオプションに保存する長い文字列のキーボードのキーに対応する文字のペアを手動で指定することで提供されるのと同様の動作を実現できlangmapます。個人的には、私の母国語も英語ではありませんが、keymap代わりにこの方法を使用することをお勧めします(そしてお勧めします)。

結論として、上記のすべては、Vimがキーマップを持っている(または持つように構成できる)他の言語にも等しく適用できることを強調する必要があります。

私が最初にこの回答をしたときから尋ねられた同様の質問「<ahref="https://stackoverflow.com/q/8015231/254635">キーボードレイアウトの「不快感」」に対する私の回答も参照してください。

于 2010-09-23T10:48:42.623 に答える