バカとは私のこと。Ubuntu 18.04のときも日本語入力について、メモっていたが、それでもインストールして何日かは、あーでもないこーでもないとやってるので、もっと詳細にメモることにした。個人的メモなので整理する気もない。
Ubuntu 20.04でibus-skkが動かなくなり1困っていたが原因が分かった…fcitxを試すときに作成した~.pam_environmentの中身が
XMODIFIERS DEFAULT=@im=fcitx
GTK_IM_MODULE DEFAULT=fcitx
QT_IM_MODULE DEFAULT=fcitx
と fcitx のままだったから…im-configで ibus に変更したりしていたのが、上記ファイルは変更されなかったようだ。
細かく見ると
~/.xinputrc
# im-config(8) generated on Thu, 23 Jul 2020 19:59:21 +0900
run_im ibus
# im-config signature: 952ed4c3a278cc54c2b6c23e16fd88e8 -
といったファイルもあるんだね。
しかし、何故 fcitx に浮気などしたかというと、 vi でやはりコマンドモード(ノーマルモード)にしたときに英数入力になってほしいのだけど、上手くいかなかったりしたからだ。(それは私が、設定の理解をしてなかったからだ)
tyru/eskk.vimを使うときは、viで日本語入力をうけもつから、OS(?)側の入力メソッドは英数入力であるのが望ましい。しかし、Windowsと違ってimdisableできない。だから eskk.vim での制御は諦める。
そこで、 fudist - im_control.vim - IBusにあるとおりの設定を行う。
ibus engineはインプットメソッドの変更はできるので、
fuenor/im_control.vimを使う。英数(US)にするibus engine "xkb:us::eng"とskkにするibus engine "xkb:jp::jpn" の二つの外部コマンド使って切り替えさせる。
let IM_CtrlMode = 1
"「日本語入力固定モード」切替キー
inoremap <silent> <C-j> <C-r>=IMState('FixMode')<CR>
function! IMCtrl(cmd)
let cmd = a:cmd
if cmd == 'On'
echo 1
let res = system('ibus engine "skk"')
elseif cmd == 'Off'
echo 2
let res = system('ibus engine "xkb:us::eng"')
endif
return ''
endfunction
この時、インプットメソッドがskkだけだと、切り替えできない。なので、入力ソースに 英数(US) を追加する必要がある。
また、システム設定の 地域と言語 の入力ソースのオプションを ウィンドウごとに別のソースを使用可能にする にしておかないと、vimと他のアプリを行ったり来たりするときに、折角vimでインプットメソッドを制御しているのに、水の泡となってしまう。
また、困るのがibusの仕様で言語を日本語にすると、キーボードレイアウトも日本語になってしまうので /usr/share/ibus/component/skk.xml の<layout>ja</layout>→<layout>us</layout>にする必要がある。
お好みで、iBus SKK設定の動作、初期入力モードをひらがな、もしくは、英数を選択する。
ここらへんの事情はfcitxでも同じ。
fudist - Vim/GVimで「日本語入力固定モード」を使用するを参照に、 入力メソッドを不活性化する fcitx-remote -cと 入力メソッドを活性化する fcitx-remote -o を使って制御する。
let IM_CtrlMode = 6
"「日本語入力固定モード」切替キー
inoremap <silent> <C-j> <C-r>=IMState('FixMode')<CR>
これだけで済むのはありがたい。ただ 入力メソッドの設定 でキーボード-英語(US)とSKKの上下の順番を逆にすると正しく動作しない。fcitxはibusのようなキーボードレイアウトの問題が起きないのと、設定の細かさなどで、できればこちらを使い続けたいのだけど、 GNOMEの検索、拡張機能などでは日本語入力できない という問題がある…
となると GNOME を使うならやはりibusが良いということで、fcitxとibusをああでもないこうでもないと繰り返していたら、冒頭で言ったようにibus-skkが動かないってざまになった。
あれこれ難しく考えすぎて、遠回りしたが、システム設定の 地域と言語 の入力ソースのオプションを ウィンドウごとに別のソースを使用可能にする にする。そして、vim使用時は英数(US)のままにしておいて、
tyru/eskk.vimを使えば、imdisableの状態と変わらずに操作できる。また vimrc でもあれこれと制御のための記述を書く必要もなくなる。
ということで、結局、自分は
| 設定箇所 | 設定 |
|---|---|
| 地域と言語 | ウィンドウごとに別のソースを使用可能にする |
| vim | tyru/eskk.vim |
で問題なく日本語入力できていいる。
-
インプットメソッドは切り替えられるのだけど、
Ctrl+jを押下してもskkが動かない ↩︎