はじめに
だいぶ前にSurface Goに入れたままにしてあった、Ubuntu 24.04.4 LTSを弄ってみました。
(今どきなら、26.04 LTSなのもしれませんが、このままでも29年5月まで使えますし)
Vimで日本語入力を快適に行うまでの設定メモになります。
環境
Ubuntu 24.04.4 LTS
Vim 2:9.1.0016-1ubuntu7.18
mozc 2.28.4715.102+dfsg-2.2build7
ibus 1.5.29-2
fcitx5-frontend-gtk3 5.1.1-1build2
fcitx5 5.1.7-1build3
iBusからFcitxへ変更
iBusのままだと、Vim協調がうまく行かなかったので、Fcitxに変更しました。
ibus engineの返却には、mozc-jpとxkb:jp::jpnがあるらしいのですが、直接入力状態でもmozc-jpが返ってくるんですよねぇ。
あとは、変換/無変換カスタマイズもFcitxのほうがやりやすい気がしたので。
(昔に触ったことがあるから、というだけかもしれませんが。)
・・・ということで、Fcitx をインストール
sudo apt install fcitx5 fcitx5-mozc
im-config -n fcitx5
インストールしたところ、こんな通知が出ました。
ウェイランド診断
入力メソッドのポップアップを提供するために、Input Method Panel GNOME Shell Extensions をインストールすることをおすすめします。
https://extensions.gnome.org/extension/261/kimpanel/
そうしないと、GNOME Shell のアクティビティ検索ボックスで入力するときに、入力メソッドのポップアップが表示されないことがあります。
実際にSuperキー(要するにWindowsキーですな)を押したときの、🔍検索ワードを入力と書かれているところで、変換候補が表示されません。
iBusの時には表示されていたんでしょうか?確認してないのでわかりません。
Kimpanel の追加
「Extension Manager」をインストール
sudo apt install gnome-shell-extension-manager
アプリ一覧に「Extension Manager」が追加されているので起動します。
「🌍探す(B)」から「Input Method Panel」(作者csslayer)を検索してインストール。
これで、先ほどの「アクティビティ検索ボックス」で変換候補のポップアップが表示されるようになります。
.profile追記
Vim の日本語入力時のプリエディット(変換中の文字列)が、iBusの時には表示されていたのですが、Fcitxに変更することで表示されなくなってしまいます。
さっきまでのアクティビティ検索ボックスとは逆の症状です。
あちらは、入力中のひらがなは表示されて、変換候補のポップアップが出ませんでした。
Vim上では、入力中のひらがなは表示されず、変換候補のポップアップだけが表示されます。
このままでは困るので、~/.profileに以下を追記します。
export FCITX_NO_PREEDIT_APPS=''
以前も困ったような記憶があるのですが、どうやらプリエディットさせないアプリのリストにgVimが指定されちゃってるみたいなので、明示的に空にします。
WPS Officeを使う人の場合は、こうした方が良いのかも?
export FCITX_NO_PREEDIT_APPS='wps.*,wpp.*,et.*'
・・・Ubuntu 26系に変えたら直ってるのかな?
Mozcの設定
最近はもっぱらJISキーボードで月配列入力をしているので、こんな設定変更をしています。
「設定 - 入力メソッド」から
「キーボード - 英語(US)」を削除。
「キーボード - 日本語 - 日本語(OADG 109A)」を追加。
Mozcの設定ツールで、自作のローマ字テーブルをインポートします。
段々と整ってきました。
Fcitxの設定
「設定 - グローバルアクション」から
「入力メソッドを有効にする:」に「変換」
「入力メソッドをオフにする:」に「無変換」
こっちのが優先されるので、Mozcのキー設定でHenkanやMuhenkanをカスタマイズする必要はないです。
Vim協調の設定
.vimrcに以下を追記します。
"##### Fcitx5 / Vim IM cooperation #####
function! Fcitx5Activate(active) abort
if a:active
call system('fcitx5-remote -o')
else
call system('fcitx5-remote -c')
endif
endfunction
function! Fcitx5Status() abort
return str2nr(system('fcitx5-remote')) == 2
endfunction
set imactivatefunc=Fcitx5Activate
set imstatusfunc=Fcitx5Status
set iminsert=0
"##### Fcitx5 / Vim IM cooperation end #####
以前は、autocmdでInsertEnterとInsertLeaveにfunctionを割り当てて、自前で直前insertモードの状態などを保持させて判定して切り替えていたのですが、imactivatefuncとimstatusfuncを使ってこうなりました。
imactivatefunc → VimがIMをON/OFFしたい時に呼ばれる関数。
imstatusfunc → VimがIMのON/OFF状態を得たい時に呼ばれる関数。
詳細は、:h 'imaf'や:h 'imsf'を参照なのです。
Vimヘルプ日本語化
ヘルプ参照が出たところで、ついでなので Vimヘルプを日本語化する方法もメモとして残しておきます。
mkdir -p ~/.vim/pack/vimdoc-ja/start
git clone https://github.com/vim-jp/vimdoc-ja.git ~/.vim/pack/vimdoc-ja/start/vimdoc-ja
これでOK.
まだ英語で出るなら、こんな感じ。
set hlg=ja,en
ヘルプを最新化したい場合は、こうするだけ。
cd ~/.vim/pack/vimdoc-ja/start/vimdoc-ja
git pull
・・・なんて便利なんでしょう。
このSurface Go は、右斜め45度くらいに傾けたときにしかカバーキーボードが反応しなくなってしまったため打ち捨ててあったものを、Windows10サポート終了問題の時に、とりあえずUbuntuをセットアップしたあと、kritaをインストールして、Surfaceペンでお絵描きパッドとして小学生の娘に与えていたのですが、娘がスクラッチをやりたいと言い出したため、雑に有線キーボードとマウスをゴテゴテと繋いであげたら、画面が狭いし線がウジャウジャしてうざいということで、私の手元に返ってきたものになります。
確かに、本体だけの状態よりも圧倒的にボリューム感を増すワイヤードフォームはウザすぎたので、ThinkPad Bluetooth トラックポイントキーボード(KT-1255)と組み合わせてスッキリと使ってみようかとしているところです。
娘には、嫁さんが以前に使っていた光学ドライブ内蔵タイプのデカ目なノートPC(これまたWindows11サポート対象外)にやはりUbuntuを入れて、これまた古いWacomタブレットを繋いで、アスペクト比が合わず無駄な入力エリア多めになってしまった状態で与えておきました。
画面に直接ペンで描けなくても、画面が広いほうが良いらしいです。Webアプリには広い描画領域が必要ですもんね。
トラックポイントよりもタッチパッドやマウスのほうが良いらしいです。赤ポッチ族は少数派ですもんね。
・・・しょうがないですね。
キーボードを繋いだからには、Vim と月配列が使えなければ個人的にはお話になりません。
せっかくなので、設定した内容をメモとして残して、Qiitaに上げておこうかと思いました。
というかこんな基本的な設定すらしていない状態のままだったことに驚き。
今メモすることができたので、怪我の功名と思いましょう。
(流石にcaps2ctrlはすでにやってあったので割愛)