前にVim以外でVimする: Windows編 でWindowsでyamyを使って Vimっぽい動きを再現する物を作ってみましたが、 AutoHotkey に移行することにしたので、 AutoHotkeyでも同様の物をつくってみました。
vim_ahk
インストール方法
AutoHotkey用vim設定ファイルはGithubのレポジトリに置きました:
ここにあるvim.ahk をAutoHotkeyを使って開くか、 もし、すでにAutoHotkeyを使っている場合、 このファイルを使っている設定ファイルのディレクトリに置いて、 設定ファイルのAuto-execute section (ReturnやHotkeyの設定などが始まる前)に
#Include %A_ScriptDir%\vim.ahk
を書いてファイルをインクルードします。(内容をコピペしても良いですが、最初のAuto-execute sectionの部分は分けてファイルの先頭に書いてください。)
また、AutoHotkeyは実行ファイル化の機能があって、AutoHotkey本体をインストールしなくても動かせます。 もし、AutoHotkeyをインストールしないまま試してみたい場合は、
Releasesページからzipをダウンロードして解凍して取り出し 実行してみてください。 これだとAutoHotkeyをインストールしてなくても単独で使えます。
設定
初期設定では以下のソフト上で有効になっています。
- Notepad (メモ帳)
- Wordpad
- TeraPad
- Exploler
- Thunderbird (only sending window)
- Power Point
- Word
- Evernote
vim.ahkの先頭にこれらの設定(GroupAdd
)が書いてあります。
Thuderbirdに関しては、class名にするとFirefoxと被ってしまうので、
Windowのタイトルを取って送信Windowのみで有効に成るようになっています。
他のソフトでWindowタイトルが作成:
等となるものがあると、そのソフトでも
有効になります。
Windowの調べ方や設定方法はこちらを参考にしてみてください。
もう一つvim_verbose
の値が初期では2になっていますが、
これはモードが変わったりした時に表示される情報の詳細さを指定して
- 0: 何も表示しない
- 1: モード名のみ(
Vim_Normal
,Vim_Visual
など)をTask Tray Tipsとして表示 - 2: リピート回数等の情報もTask Tray Tipsとして表示
- 3: メッセージボックスも表示
注意として、各動き(j
で下に下る)などすべてのNormal Modeでの動きの後に
設定の変更があるので、殆の場合にメッセージが表示されます。
従って3は完全デバッグ用です。
Tipsが邪魔な場合は0にして下さい。
使い方
Vimの基本的な動きを再現してあります。 基本的にyamyでやった事と 同じ事が出来ます。
詳細はレポジトリのREADME(vim_ahk) を参照してください。
AutoHotkeyの方が優れている点としては、リピート回数(38jで38行下がるなど)とかが変数で 定義できるので、yamyの場合は100回が限度にしていましたが、、 今回の場合は上限はありません。(100回以上のリピートは滅多に必要とされないと思いますが…)
気になる点としては、たまにホットキー先でCtrlなどを使う場合、 そのキーを押し続けてキーリピートを実行させようとすると たまにCtrl+押したキーの様な信号が送られてしまう点。
例えばNormal Modeでpは貼り付けですが、貼り付けるためにCtrl-vにマップしてあります。 複数貼り付けたい時、pを押し続けると途中でプリンタが呼び出される(Ctrl-p)事がありました。 これを回避するために、この貼り付けについてはリピートが効かないように なっています。(pを押し続けても1回しか貼り付けられない。)
他の動きのキーはキーリピートを制限してませんが、おかしな動きをした場合は教えていただけるとありがたいです。
カーソルやマウス、Windowなどを複数修飾キーと共にhjklなどで操作する
yamyやMacでKeyRemap4macBook
でやった様にカーソルやマウス、Windowsなどをvimっぽい操作で動かす
設定は現在使っている
Mainファイル
の中に書いてあります。
この中のCursor, Mouse, Window move/size
の項目をコピペするなり参照するなり
してください。
今後の改善点
上のキーリピートの問題は1つなんとかしたいところです。
キーを離すのを待つ関数などがあるのですが、色々試しても今のところ上手く出来てません。
このvim設定の場合はそれ程問題が無いのですが、
Ctrl+Alt-jなどで直接上下左右に移動するとき、
その時にたまにj
などが記入されてしまって困ってるので、
なんとかしたいところです。
もう一つはMacの方でKeyRemap4MacBook+MadRubyで マクロっぽい動きを再現 してみましたが、これと同じことをしたいと思ってます。 Windowsにも似たようなソフトはいくつかあるのでそういうのも使っても良いのですが、 AutoHotkey自体が変数を使えたりするので、 なんとか単独出来ないかな、とおもってます。