私は、Ubuntu 16.04 (をカスタマイズしたLin4Neuro 16.04)でfcitx+mozcで日本語入力を行っています。
エディタはvimを利用しています。
多くの方がネットに記載されていますので、詳細は書きませんが、私がvimで日本語文書を書くとき、
- 日本語で入力している時、入力が終わった後、ESCキーを押しても日本語入力の状態のままなので、一度mozcを切ってからでないと、ノーマルモードになれない。
という問題がありました。
この点に関して、私がよく参考にさせていただいている「いくやの斬鉄日記」にまさにこれに関する記事があり、中国語ですが、この問題を解決する .vimrc に記載する設定のリンクが紹介されていました。
早速、以下を ~/.vimrc に記載しました。(中国語のコメントは、英語に変換してあります)
"##### auto fcitx ########### let g:input_toggle = 1 function! Fcitx2en() let s:input_status = system("fcitx-remote") if s:input_status == 2 let g:input_toggle = 1 let l:a = system("fcitx-remote -c") endif endfunction function! Fcitx2zh() let s:input_status = system("fcitx-remote") if s:input_status != 2 && g:input_toggle == 1 let l:a = system("fcitx-remote -o") let g:input_toggle = 0 endif endfunction set ttimeoutlen=150 "Leave Insert mode autocmd InsertLeave * call Fcitx2en() "Enter Insert mode autocmd InsertEnter * call Fcitx2zh() "##### auto fcitx end ######
これでvimを起動したところ、日本語でいろいろ書いた後に、ESCを押してノーマルモードに戻ると、自動でmozcがoffになりました。やった!という感じです。
しかし、もう少し使っていて、不便に感じることがありました。それは、vimを起動して最初の挿入モードになるときに必ず mozc が立ち上がってしまうことです。日本語の文章を書くときはいいのですが、スクリプトを書くときは邪魔になります。ここは自動じゃないほうがいいなと思いました。
で、上の記載をよくよく見ると
Fcitx2en() というファンクションと
Fcitx2zh() というファンクションがあり、
前者はESCが押された時に自動でinput method (IM)をoffにする機能であり
後者は挿入モードになった時に自動でIMをonにする機能のようです。
私は後者の機能がいらないんだと気づきました。
なので、以下のように、Fcitx2zh()のところを削除しました。
"##### auto fcitx ########### let g:input_toggle = 1 function! Fcitx2en() let s:input_status = system("fcitx-remote") if s:input_status == 2 let g:input_toggle = 1 let l:a = system("fcitx-remote -c") endif endfunction set ttimeoutlen=150 "Leave Insert mode autocmd InsertLeave * call Fcitx2en() "##### auto fcitx end ######
こうしたところ、私の期待していたように
- vimでノーマルモード→挿入モードになった時にはIMは起動しない
- 必要時に手動でIMを起動
- ESCを押すと自動でIMをoff
となりました。
これでvimがさらに便利になりました。
自分の備忘録として記載しておきます。