[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をインストールする

im-selectのGitHubページを参考にインストールしたいところですが、2021年11月現在のv1.0.1はmac OS Montereyへスクリプトからインストールするとインストール完了の表示はされますがインストールされません。

curl -Ls https://raw.githubusercontent.com/daipeihust/im-select/master/install_mac.sh | sh

そこで、以下の手順でインストールしていきます。

Downloadsディレクトリにダウンロード

一度ユーザーディレクトリ直下のDownloadsに実行ファイルをダウンロードします。

curl -Ls -o ~/Downloads/im-select https://github.com/daipeihust/im-select/raw/master/im-select-mac/out/im-select

/usr/local/binへ移動

パスの通っているユーザーの実行ディレクトリへ移動します。

sudo mv ~/Downloads/im-select /usr/local/bin/

実行権限を振る

そのままでは権限がなく実行できないので、権限を振ります。

chmod 777 /usr/local/bin/im-select

一度Finderから開いて実行する

mac OSに不正なソフトウェアかもしれないから実行しないとエラーが表示されて実行できません。
直接Finderから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から実行する

autocmdでインサートモードを抜けるとき、コマンドラインを抜けるときにim-selectを引数付きで実行しましょう。

以下は各モードを抜けた時に必ず日本語入力を無効にする設定です。

if executable('im-select')
autocmd InsertLeave * :call system('im-select com.apple.keylayout.ABC')
autocmd CmdlineLeave * :call system('im-select com.apple.keylayout.ABC')
endif

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