Windows上のどこでもVimライクな動作を出来る様にする vim_ahkで タスクトレイアイコンを右クリックして出て来るメニューから 設定変更を出来る様にしました。
vim_ahkでの設定方法
vim_ahkはAutoHotkeyを使ったどこでもVimエミュレーターです。
AutoHotokeyスクリプトなのでファイルの中身を見て設定を変えて走らせる事も可能ですが、 起動中にトレイアイコンの右クリックメニューから設定変更の出来る設定画面を出せる様にしました。
この設定画面はCmd-Alt-Shift-Vでも起動可能です。
今設定できるものとしては
- RestoreIME: チェックするとノーマルモードからインサートモードに戻る時に前のインサートモードの時のIMEの状態に戻す。
- vim_ahkではIMEがONの時にESCを押すと自動でIMEをOFFにしてノーマルモードに入る。
- JJ: チェックするとJJと素早く打つことでノーマルモードに入れる様になる1。
- Icon: チェックするとトレイアイコンをモードによって変更する。
- Verbose: モード切替時の表示、0: 何もなし、1: モード名だけのToolTip、2: 詳しいToolTip、3: Msgbox表示(デバッグ用)
これらの設定はスクリプトを消しても保存され 次の起動時に自動的に読み込まれて反映されます。 (スクリプトを直接変更しても保存したものの方が優先されます。)
保存先の設定ファイルはC:\Users<USER>\AppData\Roaming\AutoHotokey\vim_ahk.iniにあります。
ついでにvim_ahkについて的なAbout vim_ahkも作ってみました。
この辺を作るために調べた事は前回までにまとめましたが AutoHotkeyではこの様なことをするためのツールが一通り整ってるため 結構簡単に色々な事が出来ます。
今後追加したいもの
今後追加したい設定項目として vim_ahkを有効にするアプリの変更があります。
ただ、アプリ群を定義するGroupAdd
というコマンドはあるのですが
アプリを取り除くGroupDelete
的なコマンドがないので起動中に再定義するのが結構大変。
可能性としては、Group1
、Group2
…みたいにグループ名自体を変えていってしまう方法。
Removing windows from a group or deleting a group ? - Ask for Help - AutoHotkey Community
Is there any way to destroy (delete) a window group - Ask for Help - AutoHotkey Community
もしくは起動中の削除は諦めて再起動時にだけ減らせる様にすればまあ可能かも。
もう一つ、メニューから現在のウィンドウが対応してるかどうか、 というチェックを行える様にしたかったんですが、 トレイアイコンを右クリックした時点でウィンドウの判定が なくなるためか上手くいってません。 直前のウィンドウ、てきなものあったりしますが思った通りに動かず。 取り敢えずショートカットキーへの割当でできそうではありますが ちょっと試してるところです。