2019年3月30日 追記
VSCode + Vim で IME コントロール
リンクの記事にある通り外部ツールなしで実現できますのでそちらを参照してください。
TL;DR
Linux環境のVSCode+Vim拡張でxremapを用いてインサートモードからノーマルモードに戻ったら日本語入力(Fcitx)がオフになるようにする。
環境
X Window System(Linux)VSCode+Vim拡張Fcitx
方法
xremapを使ってESC, <C-[>が押されたらfcitx-remote -c
コマンドを実行する。
以下詳細
xremapについて
xremapはk0kubun氏によるX Window Systemで動作するキーリマッパーツールです。
Linux環境用のKarabinerとして作らたもののようです。
特徴としては以下の3つがあります。
アプリケーションごとの設定。シェルコマンドを呼び出せる。rootが必要ない
詳しくは作者k0kubun氏のブログで
Linux向けの最強のキーリマッパーを作った
インストールはこちらから
https://github.com/k0kubun/xremap
IMにFcitxを利用していればfcitx-remote -c
コマンドでIMがオフになるのでxremapでこのコマンドとESC
,<C-[>
キーとを紐付けします。
それでは設定ファイルです。
.xremap.config
window class_only: 'code' do
remap 'Escape', to: ['Escape', execute('fcitx-remote -c')]
remap 'Ctrl-bracketleft', to: ['Ctrl-bracketleft', execute('fcitx-remote -c')]
end
code
はVSCodeのWM_CLASS値です。
Ctrl-bracketleft
は<C-[>
のことです。
あとはxremapをservice化して自動起動するようにしてやれば完成です。
謝辞
Thank Mr.k0kubun for xremap