VSCode Vim拡張 ノーマルモードで日本語入力をオフにする


概要

VSCode に Vim拡張をインストールして使っているのですが、インサートモードで日本語を入力したあと、Escキーでノーマルモードに戻って日本語入力モードであることを忘れて「っっっj」ってなるのを防止しました。

環境

OS: Ubuntu 18.04.3 LTS (日本語Remixのisoを使用)
VSCode: 1.45.1
VSCode拡張: vscodevim.vim 1.14.4

対処法

こちらのサイトを参考に、settings.vim に以下の設定を記述したところ、期待通りEscキーでノーマルモードに遷移すると同時に、日本語入力モードがオフにしてくれるようになりました。

settings.json
"vim.autoSwitchInputMethod.enable": true,
"vim.autoSwitchInputMethod.defaultIM": "-c",
"vim.autoSwitchInputMethod.obtainIMCmd": "/usr/bin/fcitx-remote",
"vim.autoSwitchInputMethod.switchIMCmd": "/usr/bin/fcitx-remote {im}",

ご注意

大事なことですが、この設定は Fcitx 環境のものです。後述しますが、自分は iBus 環境でうまくいきませんでした。
参考までに Fcitx をインストールする手順を記載しておきます。(インプットメソッドの変更はそれなりに大きな決断だと思っております。熟考のうえ実施してください。)

$ sudo apt install fcitx-mozc fcitx-modules
$ im-config

im-config で Fcitx を使うよう設定し、OSを再起動した後、前述の設定内容を VSCode の settings.jsonに記述すればOKです。

紆余曲折(失敗談)

対処法だけであれば先程のサイトのご紹介で十分だったのですが、今回それなりの紆余曲折があったので残します。

iBus 環境でうまくいかない

自分の環境(Ubuntu 18.04.3 LTS)ではインプットメソッドが iBus でした。前述の対処方はご覧の通り Fcitx 環境のものです。ですので iBus での設定をそれなりに調べ、試したのですが、結局うまく動きませんでした。

以下のサイトで、iBus での設定例が紹介されていましたが、動作しませんでした
https://developpaper.com/configuration-of-vim-and-input-method/
NG例

settings.json
"vim.autoSwitchInputMethod.enable": true,
"vim.autoSwitchInputMethod.defaultIM": "xkb:us::eng",
"vim.autoSwitchInputMethod.obtainIMCmd": "/usr/bin/ibus engine",
"vim.autoSwitchInputMethod.switchIMCmd": "/usr/bin/ibus engine {im}"

"xkb:us::eng""xkb:jp::jpn" に変更してもダメでした。
入力モードが変わる動きを期待しているのですが、インプットメソッドが切り替わってしまう動きでした。知見不足も手伝い、結局 Fcitx をインストールするという選択をしました。

im-select というツールがあるらしい

調べるうちによく当たったのが im-select というツール。しかし、これは Mac と、 Windows 向けのツールでした。
曰く、

linux
You don't have to install this for linux. linux have tools to switch input methods

だそうです。iBus でもやり方次第ではうまくいくのかもしれません。