背景
- VSCodeVimで日本語入力するとき、Escでインサートモードから抜けたときには日本語入力がオフになっていてほしい
- 公式Gitではim-selectを使った方法が紹介されているが、これはIMEの切り替えであって日本語入力オフではない
- 上記をなんとかするためあれこれやった
環境
OS: Windows10 Pro バージョン 1903
IME: Google IME
前提
IME設定とAutohotkeyが必要
IME設定で無変換をIMEオフに割り当てる
無変換を入力した場合にIMEがオフになる設定をする。
GoogleIMEを利用している場合は
「Google日本語入力 無変換 IMEオフ」とかで検索すれば設定方法がヒットするはず。
MS-IMEでも設定可能。
Autohotkeyで無変換を入力するだけのスクリプトを書く
最初にAutohotkeyというツールを公式サイトからダウンロードしてインストールする。
Autohotkeyは元々任意のキーマップを設定したりするためのツールだが、
スクリプトを単体で実行すると、単にキーを入力するだけの処理を実行できる。
これを利用して、無変換キーを入力するだけのスクリプトを作っておく。
名前は ImDisable.ahk とする。スクリプトの場所はどこでも良い。
ImDisable.ahk
Send,{vk1D}
VSCodeVim側の設定
- Ctrl + , で出てくる設定画面から、更に右上のボタンをクリックすることで設定ファイルであるsettings.jsonを開く。バージョンによってボタンのUIが変わっていたりするのでちょっと分かりにくい。
- settings.json に以下の記述を追加する
- Autohotkey.exe と IMDisable.ahk のパスは適宜自分が配置した場所を記述する
- defaultIMの設定内容は使わないので何でも良い。とりあえずjaにしてある。
- switchIMCmd にある {im} は引数としてAutohotkey.exeに渡されるが利用しない。ないとVScodeVim側でエラーが出るのでとりあえず入れてある
{"vim.autoSwitchInputMethod.enable":true,"vim.autoSwitchInputMethod.defaultIM":"ja","vim.autoSwitchInputMethod.obtainIMCmd":"C:\\path\\to\\AutoHotkey.exe C:\\path\\to\\ImDisable.ahk","vim.autoSwitchInputMethod.switchIMCmd":"C:\\path\\to\\AutoHotkey.exe C:\\path\\to\\ImDisable.ahk {im}",}
おわり
ここまでの設定が完了すれば、インサートモードから抜けるときに日本語入力がオフになる。
Esc で抜けようが Ctrl+[ で抜けようがちゃんとオフになってくれるので地味に便利。