バカとは私のこと。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が動かない ↩︎