AutoHotkey_LとEmacs用のスクリプトを利用することで、WindowsでEmacsのキーバインドが利用できました。すごく便利なので、メモして置きます。
きっかけ
プログを書くためのエディタにWindows Live Writerを、メールクライアントにOutlookを使っているのだれども、どちらもEmacsキーバインドを実現する方法がありませんでした。
いろいろ探してみたら、どうもWindowsのキーバインド自体をEmacsキーバインドにしてしまえばいいことに気づき、今回の方法に至りました。
AutoHotkkey_Lとは
AutoHotKey_Lとは、Windowsのキーバインドを自由自在に設定できるOSS。
もともとが、AutoHotKeyがその機能を担っていたが、AutoHotKeyの開発が終了してしまい代わりにAutoHotKey_Lが主流となっているらしい。
自分でキーバインドを設定するのもいいが、ネット上にいろんなスクリプトが落ちているので、それを利用しても良い。今回は、そのなかでEmacsキーバインドを実施するためのスクリプトを利用する。
AutoHotKey_Lのダウンロードとインストール
以下のサイトからダウンロードする。
インストールは実行ファイル(AutoHotkey_L_Install.exe)を実行すればよい。手順どおりに進めばインストール完了。
AutoHotKeyが立ち上がる。
スタートアップに登録しておけば、スタートアップ時に起動するようになる。
Emacsキーバインド用のスクリプトを取得
以下のgithubからemacs.ahkを取得。
https://github.com/usi3/emacs.ahk
emacs.ahkはAutoHotKey_Lの実行ファイルと同じフォルダに入れる。
emacs.ahkの設定
AutoHotKey.ahkの編集画面を開く。
一番最後の行に以下を追加。これで、AutoHotKey.exeを実行したときに、Emacsキーバインドスクリプトも一緒に実行することができる。
#include emacs.ahk
その他、細かいemacs.ahkの改造
私の場合、WindowsのCtrl+C, Ctrll+Vが利用てきなくなるのはいやなので、Cltl+C,Ctrl+Vをコメントアウトした。Ctrl+Y,Ctrl+Wなど、貼り付け系もコメントアウト。コメントアウトは “;“を書く。
example: Ctrl+ V
;^v::
; If is_target()
; Send %A_ThisHotkey%
; Else
; scroll_down()
; Return
GoogleChomeは除外する
Chromeに適応すると既存のキーバインドが使えなくなるため、Chromeをキーバインド適応の除外条件に入れる。
特定のアプリケーションを除外する方法は、emacs.ahkのis_target内に以下を追加する。
IfWinActive,ahk_class (除外したいWindowクラス名)
Return 1
参考:https://www.autohotkey.com/docs/commands/IfWinActive.htm
Windowsクラス名を調べるためには、AutoHotKeyを右クリックして、[Winodw Spy]を起動する。アクティブなウィンドウの情報が得られるのでここからWindowクラス名が分かる。
以下、GoogleChromeの例。この場合は"Chrome_WidgetWin_1"となる。