[Mac] im-selectでVimやNeoVimの日本語入力を自動的に無効にする

[Mac] im-selectでVimやNeoVimの日本語入力を自動的に無効にする

Vimで日本語入力で入力した後にインサートモードを抜けると日本語入力状態のままなので手動でIMEを無効にしないと操作できません。
mac OSでこの問題を解決するためにim-selectを使用して対応します。

やりたいこと

それは、どんなキーだろうとインサートモードを抜けたら日本語入力を無効にしたいんです。
「karabiner使ってESC押して抜けた時には無効にする方法」 ではなくて、私は ESCでもCtrl+[でもCtrl+cでもインサートモードを抜けた時にはとにかく無効にしたいんです。

im-selectとは

im-selectはターミナルからコマンド経由でIMEのモード変更が行えるオープンソースのソフトウェアです。
VSCodeのVim拡張のVSCode VimでもIMEの制御にこれを使用しています。

im-selectをインストールする

Homebrewに公開されているため、以下のコマンドでインストールできます。

brew install im-select

確認

ターミナルからim-selectを実行し、現在のインプットメソッドが出力されればOKです。

im-select
com.apple.keylayout.ABC

im-selectの使い方

引数なしで実行すると、現在のインプットメソッドを出力します。
引数にインプットメソッドを指定すると、そのインプットメソッドに切り替えます。

# 日本語入力 無効
com.apple.keylayout.ABC
# 日本語入力 有効
com.apple.inputmethod.Kotoeri.RomajiTyping.Japanese

Google日本語入力などを使っているとインプットメソッドも変わるので、設定する環境で実行して確認しましょう。

Vimから実行するためにvim-im-selectを入れる

im-selectをインサートモードやコマンドラインから抜けるときに実行してくれるプラグインvim-im-selectがあるので、インストールします。

Vim Plugの場合

Plug 'brglng/vim-im-select'

このプラグインは以下の機能を持ちます。

  1. ノーマルモードへ戻る場合にIMEをオフ(g:im_select_default指定のもの)に変更する
  2. その際にIMEの状態を保持し、再度インサートモードに移行した時点で保持していたモードに変更する

個人的に2は余計で、復元されない方が好みですが執筆時点では有効・無効を設定するオプションはないようなので、リポジトリをForkして該当機能をコメントアウトして使用しています。

yoshida-m-3/vim-im-select

プログラミングカテゴリの最新記事