VSCodeでもnormal移行時に英数IMEに切り替えたい
長い間悩んでいたにも関わらず、案外あっさりと片付いてしまったので、ざっとご紹介<br> ちなみに私はVSCode-Neovimを使ってますが、この方法ならVSCode-vimでも動きそうな気がします<br> <br>
解決の糸口: zenhan
WindowsでIMEモードを切り替えるだけのシンプルなプログラムですが、これと.vimrcのnormal移行検知を組み合わせるだけでかなり便利になります<br> 作者には足を向けて寝られません<br> <br>
実践
やることは以下の3つのみです <br>
zipファイルをダウンロードする
iuchi氏の記事からzipファイルを適当な場所にダウンロードする<br> ちなみに私がダウンロードした時は、実行ファイル名はspzenhan.exeになっていたので、実行ファイル名が「spzenhan.exe」だったとして話を進めます<br> <br>
環境変数pathにzenhan.exeのあるフォルダのパスを追加する
アプリの検索バーに「システム」あたりまで入力すれば 「システム環境変数の編集」項目が出ることかと思います<br>
項目を選択したら「環境変数(n)...」をクリック<br>
ユーザー環境変数でもシステム環境変数でもお好きな方のPathをダブルクリック<br> 「新規(N)」を押して、spzenhan.exeのあるフォルダのパスを入力<br>
終わったら「OK」→「OK」でウィンドウを閉じる<br>
うまくいっていれば、コマンドプロンプト上で以下の動作が確認できるはず<br>
$spzenhan 0 # 英数IMEを使用
0 # IMEの変更を確認する
$spzenhan 1 # 日本語IMEを使用
0 # IMEの変更を確認する
<br>
.vimrcにノーマル復帰時の処理を書いて保存する
自分の.vimrcを開いて、以下の処理を入力
" ime off
if executable('spzenhan')
autocmd InsertLeave * :call system('spzenhan 0')
autocmd CmdlineLeave * :call system('spzenhan 0')
endif
<br>
逆にインサートモードに入った際に英数IMEに切り替えたい方は、<br>
if...
行からend...
行の間に以下を挿入するのもアリかも
autocmd InsertEnter * :call system('spzenhan 0')
<br>
ちなみに('spzenhan 1')とすると、日本語IMEに切り替わります<br>
厳密に言えばIMEをONにしてるだけですが <br>
<br>
VSCodeで動作確認
設定は以上<br> あとはVSCodeを開いて試してみてください<br> <br>
参考にしたページ
Win版の VS Code+VSCodeVim でノーマルモードに戻った時にIMEを半角英数入力にする<br>