pit-rayの備忘録

知識のあうとぷっと

WindowsをVimのキーバインディングで操作するツールを作った



はじめに

 Vimは非常に高性能なエディタである一方、使いこなすために多くの時間を要します。Vimをある程度使いこなせるようになる頃には、自転車の乗り方のように身体の芯に刻み込まれます。これは呪いようなもので、他のエディタを利用すればとてつも無くストレスを感じ、文字を打てば文章内に:wなどが散らばったりします。これは、Vimのキーバインディングを施すソフトが、多数存在する理由の一つでもあります。

 Windowsにおける統合的なキーバインディングツールと言えば、AutoHotKeyという有名なものがあります。AutoHotKeyは、独自のスクリプトであるAHK Scriptを利用してWindowsのAPIを呼び出し、キーイベントを起こすことでバインドを行います。しかし、AHK Scriptをイチから学習するコストは高く、Vimのコマンドラインやモード管理を再現しきれているものは多くありません。そこで、今回は導入コストやパフォーマンスの面を考え、Vimのキーバインディングを施す専用のツールを作りました。

win-vind

 win-vindという名前の通り、Windows専用のソフトウェアで、Windows10のみをサポートしています。ライセンスは、MITライセンスを採用しており、利用による責任を一切負いませんが、ライセンス表記を行えば配布から改変まで自由に利用できます。このツールの大きな特徴は、GUI操作、プロセス制御、Vimエミュレート、Vimライクなモード管理、コマンドラインなど、Vimっぽい操作をするための機能を一括で簡単に導入できる点です。因みに、GUIは英語と日本語、ドキュメントは英語に対応しています。GitHubとホームページは以下を参照してください。
github.com

pit-ray.github.io

また、次のリンクからダウンロードできます。
pit-ray.github.io

GUI操作

 ウィンドウのリサイズや選択、マウスの移動やクリック、仮想デスクトップの切替、UIオブジェクトの検出など、とりわけ多くのファンクションがあります。デフォルトの設定では、マウスをhjklで操作できたり、VimiumやEasyMotionのような方式でクリックを行えます。


EasyClick Demo
因みに、この機能はUI Automationをサポートしていれば動作するため、Microsoft Edgeなどのリンクも認識できます。

Vimのエミュレーション

 この機能は、メモ帳やOffice Word、WebのフォームなどでVimのキーバインディングを利用するためのものです。


Vim Emulation Demo

モード管理

 デフォルトでは、GUIを操作するためのモードと、Vimをエミュレートするための2層のモードから構成されています。内部的には、それぞれのモードは独立したものであるため、設定から好きなモードだけを利用したり、キーコンフィグを行うことも可能です。


GUI Mode and Editor Mode


Mode Overview

プロセス制御

 プロセス制御と題していますが、大層なものではなく、現在はプロセスの起動しか行えません。例えば、メモ帳をnotepadコマンドとして登録しておくと、仮想コマンドラインを用いて、次のように起動できます。


Start External Application Demo

実行可能なファイルであればどんなものでも登録でき、数に限りはありません。

Vimとの連携

 win-vindは複数起動ができないようになっており、起動中のwin-vindに対して、二つ目のwin-vindから一意のファンクションIDを渡すことで、そのファンクションをワンショットで呼び出すことができます。

$ ./win-vind.exe --func change_to_normal

したがって、Vimの:!コマンドと組み合わせることで、VimからGUIを操作したり、win-vindへスムーズに切り替えることができます。実装されている機能は、ホームページのチートシートから一覧することができます。

最後に

 以上のように、win-vindを利用することで、Vimのキーバインディング機能を一括して導入することができます。しかしながら、AutoHotKeyを利用するメリットも多くあるため、一つの選択肢としていただけると幸いです。