今回、Ubuntu 18.04にして Neovimに乗り換えて、 Input Methodを skkのみにしていた。
そして、 vimでコマンドモードにした時に英数入力になるように
Vimからfcitxを使う - Qiitaなどで見かけるとおり
set imactivatefunc=ImActivate
function! ImActivate(active)
if a:active
call system('fcitx-remote -o')
else
call system('fcitx-remote -c')
endif
endfunction
set imstatusfunc=ImStatus
function! ImStatus()
return system('fcitx-remote')[0] is# '2'
endfunction
と設定したのだけど、英数入力にならない。
やはり、 Input Methodが skkだけだと意味がないらしいので keyboard - English(US) を追加する。
しかし、切り替わらない。fcitx-remote -c
で IMEがオフに( keyboard - English(US) )にならない。何故かfcitx-remote -o
でなる…どういうことだ。
Input Methodの順番を上を keyboard - English(US) にして下に skkを移動させたところfcitx-remote -c
で IMEがオフになるように。えっとfcitx
ってそういう挙動するの!!!
また上記で紹介した Vimからfcitxを使うでは、
set iminsert=2
set imsearch=2
set imcmdline
2
(自動で日本語入力モード)を設定しているが、 input methodがサポートされていない?1とInvalid argument
として怒られる。
なので
set iminsert=0
set imsearch=0
0
(IMEをオフにする)を設定する(今は0
がデフォルトみたい)。
また、今まで skkユーザーのためのプラグイン tyru/eskk.vimについて、その使い方が良く分からなかった。
.vimrcや init.vimにとりあえず
let g:eskk#directory = "~/.eskk"
let g:eskk#dictionary = { 'path': "~/.skk-jisyo", 'sorted': 0, 'encoding': 'utf-8', }
let g:eskk#large_dictionary = { 'path': "~/.eskk/SKK-JISYO.L", 'sorted': 1, 'encoding': 'euc-jp', }
と設定したけど2、set imactivatefunc=ImActivate
の設定なしには、Ctl+[
や<Esc>
をしても英数入力に切り替わらなかったりと、プラグインの意味が分からなかった。
しかし、set imdisable
でIMEのON/OFFをさせないようにしてから、IMEオフの状態、つまり英数入力( keyboard - English(US) )にしてCtl+j
にするとIME関係なく skkできる。
プラグインの説明にそう記載されているのだけど、今までIMEをオンにした状態で使っていたので、その意味が分からなかった。そして、その状態からCtl+[
や<Esc>
すると英数入力になってくれる。
はぁ、こうやって使うんだな。これならset imactivatefunc=ImActivate
の記述も不要になると。
また、 neovim-qtだと fcitx-skkの英数入力による<
(LEFT ANGLE BRACKET、左山括弧、LESS-THAN SIGN)が入力できないという意味不明のバグに悩まされたけど( neovimだと可能)、 keyboard - English(US) だと当然というか、入力できる。
更に eskk.vimがskkserv機能を実装しました - Humanityにあるとおり、自分好みの辞書を育てるのも skkの醍醐味であるけど、入力の快適さだけを求める方にはこうしたチート?設定も可能というわけだ。