Vimを使っていると、Escキーが遠くてキーバインドを変更したくなることが結構あるかと思います。
他にも日本語入力のON/OFFや、人によってはCtrlをCapsLockと入れ替えたいという場合もあるでしょう。
キーバインドの変更ツールとしては、窓使いの憂鬱や猫まねきが有名です。
私もつい先日まで窓使いの憂鬱を使っていたのですが、これらのツールはドライバレベルでの変更を行うため問題が起こると青画面に落ちてしまうという怖い注意書きがあります。
これではどうも落ち着かないのでソフトウェアレベルでキーバインドを変更できるツールを探していたところ、この「AutoHotKey」を見つけました。
で、この「AutoHotKey」がすごすぎて感動。
キーバインドの変更はもちろんのこと、使い方次第であらゆるWindowsの操作をスクリプトで自動化できてしまいます。
かなり奥の深いソフトで、私もごく一部しか理解できていませんが、とりあえずウェブ上のコードを参考に作成した設定を載せておきます。
AutoHotKey Vim用設定
;+----------------------------------------------------------------------------------------+ ; Vimのウィンドウ限定 ;+----------------------------------------------------------------------------------------+ #IfWinActive ahk_class Vim ;「変換」→「Esc」 vk1Csc079::Esc ;「Alt+Space」→「半角/全角」 !Space::Send, {vkF3sc029} ;「Ctrl+Shift+H」でGVIMを最小化 ^+h::WinMinimize ;+----------------------------------------------------------------------------------------+ ; ウィンドウの限定を解除 ;+----------------------------------------------------------------------------------------+ #IfWinActive ;「Ctrl+Shift+H」でGVIMを開く ^+h:: Process,Exist,gvim.exe ;GVIMが起動しているかどうかを調べる If ErrorLevel<>0 ;起動していた場合(ErrorLevel変数にプロセスIDが格納される) WinActivate,ahk_pid %ErrorLevel% ;そのプロセスのウィンドウをアクティブにする else ;起動していなかった場合GVIMを起動 Run,”here is path to gdi++.exe” “here is path to gvim.exe” return
いきなり見てもなんのこっちゃ分からないと思いますが、このスクリプトをAHKで実行しておくことで以下のことができるようになります。
- Vimのウィンドウで「Esc」と「半角/全角」のキーバインドを変更
- Vimがアクティブな状態で「Ctrl+Shift+H」するとVimを最小化
- Vimが非アクティブな状態で「Ctrl+Shift+H」するとVimをアクティブ化
- Vimが起動していない状態で「Ctrl+Shift+H」するとVimを起動
「Ctrl+Shift+H」については紙copiの「Ctrl+Shift+J」に近い動作を再現。
AutoHotKey参考サイト
AutoHotKeyに興味を持った方のために参考になりそうなサイトを載せておきます。
- AutoHotkeyを流行らせるページ
- AutoHotKey - FrownWiki
- AutoHotKey Scripts @ 7bit
- ヽ( ・∀・)ノくまくまー(2006-12-20)
- AutoHotKey - notitle.txt
- AutoHotkey メモ - Principia
冒頭に書いた「使い方次第であらゆるWindowsの操作をスクリプトで自動化」というのは、AutoHotkeyを流行らせるページにリンクのある「AutoHotkeyアンオフィシャルガイド」を読むと意味が分かると思います。(閲覧に専用ツールが必要で面倒ですが、読む価値ありです)
CapsLockキーについて
最後に、このツールでひとつ注意すべきはCapsLockキーのキーバインド変更ができないこと。
どうやら日本語環境特有の問題らく、残念ながらCapsLockキーを変更したい場合はドライバレベルの変更にたよるしかありません。(追記:UWSCというツールはCapsLockの制御に対応しているようです)
私はCapsLockの変更はしないので別にかまわないのですが、どうしても気になるようならHappy Hacking Keyboardを使うという手も。
Comments»
Esc は、vimだと CTRL+’[’ でも代用
(自分は、Escになれてて いつも押せないけど)できたと思う。
Vimだと、拡張子判別して処理するボチエスのesExt に渡してる。
_vimrc で ↓みたいにして [F12]で起動。
” // ポチエス esExt で開く [F12]
”
cmap esext !start “c:/afx/bin/esExt/esExt5.exe” “%”
noremap :exe ‘!start’ expand(’c:/afx/bin/esExt/esExt5.EXE’) ‘ “%”‘