目次
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の左下にある歯車アイコンをクリックして、設定を選択します。
vim auto switchと検索欄に入力すると、下記のように4項目が出てきます。
それぞれ設定していきます。
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で両方のパスをこれに書き換えたら直りました。