この記事ではVim使用時に@キーに「Esc」と「IME-オフ」を割り当て、ノーマルモードに戻るときは@を押せばすむようにする設定について書いてあります。
環境はWindows8.1 CygwinのVimです。
概要
・IME-オフをキーに割り当てる
・AutoHotkeyで@に「Esc」と「IME-オフ」を割り当てる
IME-オフを割り当てる
たぶん「IME-オフ」がキーに割り当てられてないのでそれを行います。(割り当てられてる人は読み飛ばしてください)
タスクバーの IMEアイコンを右クリック。メニューから「プロパティ」をクリック。
「詳細設定」をクリック。
「全般」タブの 編集操作 の 「変更」をクリック。
「キー設定」タブが開かれるのでIME-オフを割り当てるキーを選択します。この記事では
「無変換」キーに割り当てています。なので以降この前提で説明していきます。
無変換の右隣のセルをフォーカスした状態で「変更」をクリック。
「機能選択」ダイアログで「IME-オフ」にフォーカスした状態で「OK」をクリック。
「設定」ダイアログで「無変換」の右が「IME-オフ」になったのを確認してから「適用」をクリック。「OK」をクリックしてダイアログを閉じます。
IME-オフをキーに割り当てる操作は以上です。割り当てが成功していれば、全角モードになっている状態で「無変換」キーを押せば半角なります。「半角/全角」キーと違って何回押しても半角のままです。
次はAutoHotkeyをインストールします。AutoHotkeyは1つのキーに2つのキーを割り当てたりできるユーティリティソフトです。
AutoHotkeyを使った割り当て
AutoHotkeyのダウンロード
AutoHotkeyのページからダウンロードします。「Download」をクリック。
ダウンロードするバージョンを選択します。「Download Current Version」をクリック。
ダウンロードした実行ファイルを実行してインストールします。
AutoHotkeyで@キーにEscとIME-オフを割り当てる。
AutoHotkeyのスクリプトを書きます。テキストエディタで新しいファイルを開き、以下のコードを貼り付け 拡張子 「.ahk」で保存します。
$@::
if ( WinActive("ahk_class mintty") ){
Send,{Esc}
Sleep 1
Send,{sc07B}
}else{
Send,{@}
}
Return
$sc070::
if ( WinActive("ahk_class mintty") ){
Send,{@}
}else{
Send,{sc070}
}
Return
上のコードの意味はCygwin(ahk_class mintty)にフォーカスがあるときは@キーを押したら「Esc」と「無変換」(上でIME-オフに設定してある)が押されたことにする。
Cygwin以外のアプリにフォーカスがあるときは@が押されたことにするというものです。
これだけだとVimで@をタイプできなくなるので下のブロックでキーコードsc070(カタカナひらがなキー)が押されたときは@が押されたことにしています。
(割り当てるキーコードはこちらのページにあります)
スクリプトを実行
このスクリプトをエクスプローラーでフォーカスしenterすればそれで実行できます。スタートアップフォルダに置いておけばpcを起動すれば自動的にスクリプトも実行されます。
この設定でVimを使うと、@キーを押せば「Esc」と「IME-オフ」が同時に押されたことになり簡単にノーマルモードに戻れます。
この記事は以上です。