LoginSignup
8
9

More than 3 years have passed since last update.

VSCodeVimでインサートモードから抜ける時に日本語入力をオフにする

Last updated at Posted at 2019-09-15

2020-11-07追記

Win版の VS Code+VSCodeVim でノーマルモードに戻った時にIMEを半角英数入力にする
同じことをやってくれるシングルバイナリツールを作ってくれている人が居たのでこちらを採用することに。
今回の用途ではIME切り替えができるツールなら何でも良いので、高機能なAutohotKeyよりも単一機能のツールの方が起動が速いはず。
入力時のラグはストレスになるため、より軽い上記ツールの方がおすすめ。

背景

  • 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+[ で抜けようがちゃんとオフになってくれるので地味に便利。

8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9