Mac OS Xで便利なキーボードレイアウト切り替えを提供するVimプラグイン

まえがき



最近、ほんの数週間前、私はVimに切り替えることにしました。 私はこのエディターの潜在的な力に魅了されました。すべてを正しい方法で設定すれば、思い通りに機能する本格的なIDEを手に入れることができます。 さらに、あらゆる種類のキーボードショートカットを使用すると、超音速でテキストを作成および編集できます。必要な組み合わせを1回だけ覚えておけば十分です。 さらに、独自のものを追加できます。



私を悩ませた唯一のことは、Vimで完全に機能するために絶えずレイアウトを切り替える必要があることでした。 はい、もちろん、キーのマッピングを作成できますが、これは常に機能するとは限りません。



創造の歴史



最初の解決策は kossnocorp から提案さました。 このソリューションの本質は、Objective-Cで書かれた小さなアプリケーションを使用することでした。これにより、適切なタイミングでUSレイアウトがアクティブになります(たとえば、入力モードを終了するとき)。 habrauzer labriaが kossnocorpと共有しているこのプログラムのソースコードもありました 。 しかし、この決定は私には不向きでした。私はIlya Birmanの活版印刷レイアウトを使用します 。 それから、同じ考えを基礎として、決定を書くことにしました。



私自身はObjective-Cプログラマーではありませんが、 アップルの優れた C知識と優れたドキュメントを武器に、掘り始めました。 すぐに言ってやった。 半日殺しましたが、私はまだ望ましい結果を達成しました。 元のソリューションが皮肉にもレイアウトを米国レイアウトに切り替えて名前で見つけた場合、私のソリューションは柔軟で、レイアウト名ではなく、いわゆるインデックスによって動作しました。 インストールされたレイアウト(私の場合、これは米国英語レイアウトとロシア語および英語バーマンレイアウト)を取得し、目的のレイアウトを番号で選択します。



その後、当然、Vimのプラグインが続きます。 ここではすべてが非常に簡単です。autocmdを使用すると、特定のイベントに対して関数を呼び出すことができます(たとえば、同じInsertLeave-入力モードを終了します)。



ただし、 VimLのドキュメント調べてみると、この言語がどれほど強力であるかがわかりました。 イベントモデル、オブジェクト、リスト、リストを操作するための関数、正規表現、数学関数など、ほぼすべてのものがあります。 そして、Vim入力に集中できなくなったときのキーボードレイアウトを思い出してみてください。



結果



結果は、レイアウトを切り替えることができる便利なプラグインです。 そして最もおいしい:Vimが入力フォーカスを失った場合、プラグインはレイアウトを記憶し、フォーカスが戻ったときにレイアウトに切り替わります(たとえば、メッセンジャーなどに気を取られた場合)。



そうそう、これすべてで、プラグインはタブごとにレイアウトを別々に保存します。 まあそれは素晴らしいことではありませんか?



インストールとセットアップ



プラグイン自体のソースコードは GitHubにあります。 すべてが通常通りです。ソースコードを.zipでダウンロードし、解凍して、すべての内容を〜/ .vimに入れます。



GitHubでは、補助アプリケーションのソースコードを見つけることができます 。 まだMac OS X Leopardを使用している人には必要な場合があります。すべて自分でコンパイルする必要があります。 ソースではすべてが詳細に説明されているので、難しくはありません。



プラグインはデフォルトのレイアウトインデックスをゼロに設定します。

let g defaultInputSourceIndex = 0


私のように、Birmanレイアウトなどを使用する場合は、インデックス値を変更する必要があります。 それを見つけるのは非常に簡単です。目的のレイアウトに切り替えて、補助アプリケーション( 〜/ .vim / bin / KeyboardLayoutSwitcher )を起動するだけです。 ターミナルウィンドウが開き、目的の番号が次のようになります。



補助アプリケーションを起動した後のターミナルウィンドウのスクリーンショット



その後、 〜/ .vimrcを開き、目的の行を追加します。

let g defaultInputSourceIndex = n
nは受け取った番号です(スクリーンショットでは1です )。



Vimでコーディングをお楽しみください。





更新 :habrayuzerのリクエストにより、cypokは「最も​​おいしい」オプションを作成しました。 〜/ .vimrcに行を追加する場合:

let g kls_focusSwitching = 0
Vimで入力フォーカスを失い、復元するときにレイアウトを保存および復元する機能は無効になります。




All Articles