VScodeのvimの拡張機能を追加した状態で日本語のテキストを入力した後、ノーマルモードに戻った時に明示的に英数入力に切り替える操作が面倒だったので、
自動でに切り替える方法がないか調べたらドキュメントに設定方法の記載が見つかりました。
以下はMac向けですが他OSの設定方法もドキュメントに記載があります。
im-selectの準備
ドキュメント記載の方法ではim-selectというコマンドラインツールを使います。
インストール
以下のコマンドでインストールを行います。
curl -Ls https://raw.githubusercontent.com/daipeihust/im-select/master/install_mac.sh | sh
インストール後コマンドが実行できる状態になっていればOKです。
$ curl -Ls https://raw.githubusercontent.com/daipeihust/im-select/master/install_mac.sh | sh
* Downloading im-select...
* im-select is installed!
$ which im-select
/usr/local/bin/im-select
im-selectの使い方、動作確認
現在の入力状態(imkey)の確認
インストール後im-select
コマンドを実行すると現在の入力状態を表すパラメータ(imkey)
が取得できます。
自分のgoogle日本語入力を使っている環境では以下の値が表示されました。このパラメータは各自の環境で異なったものになると思います。
# 英数入力状態の実行結果
$ im-select
com.google.inputmethod.Japanese.Roman
# 日本語入力状態の実行結果
$ im-select
com.google.inputmethod.Japanese.base
指定のimkeyへの切り替え
先程のパラメータを以下のようにim-select
に指定してあげることで入力状態の切り替えを行うことができます。
先程取得したパラメータを指定して入力状態の切り替えができればim-select
側の準備は完了です。
# 英数入力へ切り替え
im-select com.google.inputmethod.Japanese.Roman
# 日本語入力へ切り替え
im-select com.google.inputmethod.Japanese.base
vscode側の切り替え設定
vim拡張機能には入力切り替え用に以下の設定項目があります。
それぞれ設定してあげることでim-select
コマンドの切り替えが実行され、ノーマルモードに切り替えた際に合わせて英数入力へ切り替わるようになります。
設定値 | 説明 |
---|---|
vim.autoSwitchInputMethod.enable | インサートモードを抜けた際のコマンド実行の有効/無効 |
vim.autoSwitchInputMethod.defaultIM | デフォルト(ノーマルモード時)の入力状態を表すパラメータ |
vim.autoSwitchInputMethod.obtainIMCmd | 現在の入力状態のパラメータを取得するコマンドのフルパス |
vim.autoSwitchInputMethod.switchIMCmd | 入力状態の切り替えを行うコマンドのフルパス。 {im}部分には上記のデフォルト入力状態のパラメータが自動的に置換されて入力されます |
今回の場合は以下のような設定値になります。
"vim.autoSwitchInputMethod.enable": true,
"vim.autoSwitchInputMethod.defaultIM": "com.google.inputmethod.Japanese.Roman",
"vim.autoSwitchInputMethod.obtainIMCmd": "/usr/local/bin/im-select",
"vim.autoSwitchInputMethod.switchIMCmd": "/usr/local/bin/im-select {im}"
設定画面では以下のような感じになると思います。
この設定を反映後、vimのインサートモードからノーマルモードの切り替えのタイミングで入力状態も英数入力へ切り替わっていれば設定完了です。