VSCodeのVim使用時に日本語からノーマルモード移行でおかしい時の対処法

公開日:
目次

VSCodeのVimで日本語からEscするとおかしくなる。

普段VSCode(Visual Studio Code)のVim拡張機能を利用しているのですが、日本語入力で文字を打った後にescで抜けるとうまくノーマルモードに移行できない問題がありました。

コードを書いているときは日本語が少ないのでまだいいですが、このブログ記事もVSCodeで書いているので日本語入力からノーマルモードに上手く移行できないとイライラです。

対処法を見つけたので、備忘録がてら記事にします。

im-selectで解決

解決方法は、VSCodeのVim拡張機能のGithubに書いてありました。

3rd party製ではありますが、im-selectを利用することが推奨されています。

im-selectのインストール

まずはim-selectをインストールしましょう。

Macの場合

ターミナルを開き下記を実行してください。

  • HomeBrewを使う場合
brew tap daipeihust/tap && brew install im-select
  • その他
curl -Ls https://raw.githubusercontent.com/daipeihust/im-select/master/install_mac.sh | sh

Windowsの場合

下記のページにim-select.exeのリンクあるので、ダウンロードしましょう。64bit版がいい人はthis oneと書かれたリンクをクリックしましょう。

VSCodeの設定を変更する

VSCodeの左下にある歯車アイコンをクリックして、設定を選択します。

Image from Gyazo

vim auto switchと検索欄に入力すると、下記のように4項目が出てきます。
Image from Gyazo

それぞれ設定していきます。

Enable

わかりやすいものから設定していきます。
これはチェックボックスにクリックでチェックを入れて完了です。

Obtain IMCmd

現在の入力状態のパラメータを取得するコマンドのフルパスを入力します。単純にim-selectが入っているフォルダパスを入力すればOKです。

  • Macの場合
     
    下記の通りターミナルで実行することでim-selectの保存場所が確認できます。
which im-select

上記を実行することで、im-selectの保存先がわかります。ほとんどのユーザは/usr/local/bin/im-selectと返ってくるはずです。

Default IM

Default IMは名前の通り、デフォルト状態(英語の状態)のIMを追加します。

  • Macの場合

確認方法は、下記のように英語が入力できる状態でターミナルに入力して返ってきた値になります。

im-select

これでうまく返ってこない場合は、先ほどのObtain IMCmdで入力したフルパスをターミナルに入力してください。おそらく値が返ってくるはずです。

ほとんどの方がcom.apple.keylayout.ABCになると思います。

Switch IMCmd

ここには先ほどのObtain IMCmdの後ろに {im}をつけた値を入力します。

例(Obtain IMCmdが/usr/local/bin/の場合): /usr/local/bin/im-select {im}

{im}はそのまま{im}と入力すればOKです。私の場合は勘違いして{im}に個別に何かの値を入力すると思い、日本語入力用のim keyを書いてしまっていたのですが間違いでした。{im}と記入するだけであとはVSCodeがDefault IMの値を追加してくれるようです。

上手くいかない場合

im-selectを入力して起動するのに、設定ファイルの変更がうまくいかないときは、コマンドのパスが間違っている可能性が高いです。

インストールした後のパスが/usr/local/binではないパスになっていることがあるので、必ずwhich im-selectで確認しましょう。

私の場合は、opt/homebrew/bin/im-selectで両方のパスをこれに書き換えたら直りました。

参考