はじめに
Androidスマホに Termux 入れて、Vimでも入れて遊ぼうと思っていたのですが、ちっさい画面のために青歯キーボードを持ち歩くのもなぁ・・・とか考えていたのですが、ChromeOS上ではそのままLinux環境(Crostiniというらしい)でVimが使えるそうではないですか。
気付いたら、Chromebook(ASUS Chromebook CM30 Detachable(CM3001))を購入していました。
早速、Vimで快適ライフを送るための設定をしてみました。
目標は、この2点です。(直近の記事でUbuntuでやった事とだいたい同じ)
- Vim協調
- ローマ字カスタマイズ
環境
ChromeOS 151.0.7922.141
Linux開発環境を有効にする
「設定 > ChromeOSについて > Linux開発環境」を有効にします。
ユーザー名の入力を求められる程度なので、適当に決めてサクサクと有効にしましょう。
たったそれだけで、ターミナル上で bash が使えるようになります。
ターミナルに文字を貼り付けたい場合は、Ctrl+Shift+Vです。
.inputrcの設定
本記事の本題とはあまり関係ありませんが、コンソールを触る前の最低限の事だけ書いておきましょう。
set editing-mode vi
これは要するに、.bashrcにset -o viと書くオマジナイの上位呪文です。
set -o viの効能はbashのコマンドラインだけですが、こうしておけば Readline を使うすべてのプログラムがvi風になります。
・・・つまり?桃源郷ということですね。Yes.
まさにTHEユビキタスエディタの面目躍如です。 閑話休題。
パッケージリストの更新・アップグレード
まずはお作法的に。
sudo apt update && sudo apt upgrade -y
IM のインストール
これがないと始まらないやつ、その1です。
sudo apt install -y fcitx-mozc
今回のゴールは gVim で、この Fcitx-Mozc を使用することです。
※コンソール上で使う CUI の Vim では、ChromeOS標準の日本語入力が使用されるので、Mozcは使われません。
~/.xprofileに追記
GUIでしか使わないので、とりあえず.xprofileに書いておきました。
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export FCITX_NO_PREEDIT_APPS=''
# 重複起動防止
if ! pgrep -x "fcitx" > /dev/null; then
fcitx -d
fi
プレエディットが表示できるように、fcitxを起動する前にFCITX_NO_PREEDIT_APPSを空にしておきます。
で、この.xprofileに記入しただけでは、コンソールからgvimと起動した場合などに、日本語入力できませんので、.bashrcからもこの.xprofileを呼び出すようにしておきました。
.bashrcから呼んだりするので重複起動防止などしているわけですが、こうしておかないと、ターミナルから起動したのか、ランチャから起動したのか、ファイルアプリの「開く」で起動したのか、よくわからないのですが、ふとした拍子に日本語入力できなかったりする瞬間が出てくるので、とにかく漏れのないように呼び散らかしてみました。
これでも、ターミナルを起動するよりも前に、ファイルアプリから「Linuxファイル」の中のテキストファイルを直接gVimで開いたりすると、日本語入力が効かないような気がするので、Crostini環境ではGUIアプリ起動時に、.xprofileは効いていないのかも?
要調査
コメントを頂きました!
~/.bashrcではなく、~/.sommelierrcに記載することで、ターミナルがない状態で、ファイルアプリから起動した場合にも日本語入力できるようになりました。
おまけに初回のコンソール起動時にfcitxの起動でドチャっと流れなくなりました。
ありがとうございます。
if [ -f "$HOME/.xprofile" ]; then
. "$HOME/.xprofile"
fi
日本語入力ができない状態になる条件を色々と探ってみたのですが、直接的な原因は「ターミナルの有無」ではなく「Linuxコンテナを一度でも起動しているかどうか」でした。
fcitx -dでデーモンとして起動しているので、一度Linxコンテナが起動してしまえば、ターミナル自体が閉じても日本語入力は可能なようです。
実際にダメだったのはLinuxシャットダウンしたあとでした。
具体どういう場合に、日本語入力ができなかったのかのケース分けは、以下のとおりです。
★箇所が差異です。
-
~/.bashrcから~/.xprofileを呼んでいた頃- ChromeBook起動直後
- ランチャ、ファイルアプリからgVimは起動できない。(無反応)
- ターミナル起動中
- ランチャ、ファイルアプリ、ターミナルからgVim起動可能。日本語入力可能。
- ターミナル終了後
- ランチャ、ファイルアプリからgVim起動可能。日本語入力可能。
- Linuxシャットダウン後
- ランチャからgVimは起動できない。(シェルフでアイコンがいつまでもグルグル)
- ファイルアプリからgVim起動可能。日本語入力不可★。
- ChromeBook起動直後
-
~/.sommelierrcから~/.xprofileを呼ぶようにした後- ChromeBook起動直後、ターミナル起動中・終了後は状況変化無しのため省略
- Linuxシャットダウン後
- ランチャからgVimは起動できない。(シェルフでアイコンがいつまでもグルグル)
- ファイルアプリからgVim起動可能。日本語入力可能★。
(ただしMozcの表示が異常にデカくなる?)
確実にこうなる、というわけではないのですが、何度か試した感じだいたいこんな感じでした。
Linuxシャットダウン後でも、ランチャから上がって来ることも稀にあったりしますし、ファイルアプリから起動してこないこともありました。
Fcitx の設定
fcitx-configtool
を実行すると、GUIウィンドウが上がってきます。
- 「Input Method」タブの 下部の 「+」を押します。
- 「Only Show Current Language」のチェックを外します。
- 「Search Input Method」と書いてあるところに「mozc」と入力します。
- Mozcが二番目に追加されていることを確認して、 ウィンドウを閉じます。
以上で、Mozcの設定は終わりです。
US配列だったらここまでなのですが、今回はJISキーボードモデルを購入したため、このままだと文字入力時に変なことになるので、もうひと手間。
- 「Keyboard - Japanese」を追加して、一番上に移動させます。
- もともとの一番目だった「Keyboard - English(US)」を削除します。
- 次に「Global Config」タブの「Hotkey」を開いて、「Show Advanced Options」にチェックをつけます。
- 「Activate input method」と 「Inactivate input method」 の横の「Empty」をクリックして、それぞれスペースキーの左右のキーを押していきます。
- よく見たら「無変換」と「変換」ではなく「英数」と「かな」という刻印でしたが、「英数」を押したら「Muhenkan」、「かな」を押したら「Henkanmode」と表示されました。
日本語フォントのインストール
このままMozcの設定に行くと、文字化け豆腐が表示されてしまうので、その前に日本語フォントをインストールします。
sudo apt install -y fonts-noto-cjk
Mozc の設定
/usr/lib/mozc/mozc_tool --mode=config_dialog
を実行。見慣れたMozcの設定ダイアログが表示されます。
このGUI上ではマウスカーソルが正しく描画されませんでしたが、タッチ操作で何とかなりました。
「Romaji table」の「Customize...」を選択します。
Google日本語入力と同じローマ字テーブルをインポートできます。
ぶっちゃけ、ローマ字カスタマイズする必要がなければ、標準のIM使ってCUIのコンソールでVimを使うのでもいいのではなかろうか。
・・・でもVim協調できないから、やっぱりこっちのほうがいいかな?
Hotkey の有効化
vim ~/.config/fcitx/config
[Hotkey]セクションのTriggerKeyがコメントアウトされていたので、外しました。
全角半角キー(刻印は「かな⇔英数」)まで付いてるJIS配列だけど、一応これも有効にしておこうかと。
```~/.config/fcitx/config
[Hotkey]
# Trigger Input Method
# TriggerKey=CTRL_SPACE
```
↓
```~/.config/fcitx/config
[Hotkey]
# Trigger Input Method
TriggerKey=CTRL_SPACE
```
gVim のインストール
これがないと始まらないやつ、その2です。
sudo apt install -y vim-gtk3
Crostiniの標準ターミナル上のCUIのVimではFcitx-Mozcと連携できませんので、GUIのgVimをインストールします。
Vim協調の設定
前回の記事を参照あれ。
fcitx5をfcitxに変更して.gvimrcに書き込むだけでそのまま使えました。
クリップボード共有
一応有効にしておこうかと。
ChromeOS標準ではローマ字カスタマイズへの道が絶たれてしまっているので、月配列で文字入力してからブラウザのテキストエリアとかにコピペするのです。
sudo apt install -y xsel xclip
.grimrcに追記します。
" システムクリップボードを共有する
set clipboard+=unnamedplus
Crostiniのターミナル上ではマウスで選択するだけで勝手にコピーされるので.vimrcには不要です。
ナンチャラrcをチョロチョロと編集するとかならコンソール上でいいのですが、 少なくとも日本語を書くときにはgVim一択なので。
gVim の実行
以下の方法があります。
- ターミナルから
gvimと打つ。 - ランチャから「GVim」を選択。
- ファイルアプリからLinuxファイルの開くメニューから「GVim」を選択。
起動した直後にフォーカスを取得してくれないので、指で画面をつついたり、マウスカーソルで選択してやる必要があります。
指でつつくと、visual選択されてしまったりするので、突き方には注意が必要です。
キー受付のフォーカスさえ渡ってしまえば、あとは何とでもなるのでいいのですが。一応、要検討ですね。
ちなみに、Chromebookを再起動したときや、Linuxをシャットダウンを行った直後は、ランチャからgVimを起動しようとしても、起動できませんでした。
裏で仮想マシンとLinuxコンテナを開こうとしているみたいなのですが、ずっとアイコンがグルグルしたままの状態になります。
少なくとも今の自分の環境では、一度ターミナルを起動してLinuxコンテナが設定された後でないと、ランチャからgVimを起動できないみたいです。
また、(上にも同じことを書いたのですが、)ファイルアプリにLinuxファイルが表示されている場合の「開く」だと、ターミナルがない状態でもgVimが起動してくるのですが、日本語入力ができない状態になる気がします。
・・・とりあえず、ターミナルを一度立ち上げておくのが安パイだと思います。
ファイルのやり取り
gVimから普通に、ホームディレクトリ(~)にファイルを保存することができます。
ランチャから「ファイル」というアプリを起動すると、「マイファイル - Linuxファイル」というところにホームディレクトリに保存したファイルが見えますので、そこからGoogleドライブ経由などで取り出すなりなんなり出来ます。
Googleドライブのオフラインファイルを有効にしているとワケがわからなくなるので、無効にしておきましょう。Chromebookは大体オンライン状態で使うと思うので。
どうやら同期されないとかそういうことはないようです。クラウド側に同期した後もローカルにコピーを残しておくようにするための指定らしいです。
気を付けるべきはLinuxファイルからGoogleドライブへ移したあと、同期が終わってるかどうかですね。ファイルアプリ上でコピーして速攻で蓋を閉じてスリープしたりすると、同期されないので、他端末で見た時にアレッ?てなります。
ちなみに、Linuxをシャットダウンすると、ファイルアプリに「Linuxファイル」が表示されなくなることがあります。その場合は、ターミナルを起動して、仮想マシンとLinuxコンテナが設定されることで、ペンギンちゃんのアイコンが表示されます。
「Linuxをシャットダウン」の活用
コンソールのアイコンを右クリック(2本指タッチ)すると、「Linuxをシャットダウン」という項目があります。
gVimをしばらく使っていて、ふと気づくと、gVimとシステムクリップボードの共有が怪しくなっていたり、 gVim上にマウスカーソルが描画されなくなっていたり、ChromeOSネイティブアプリがインターネットに繋がらなくなっていたりすることがあります。
なんか変な感じになったと思ったら、さっさとgVimはファイル保存して終了、とりあえずこの「Linuxをシャットダウン」を実行しましょう。そうするとネット接続が復活したりします。
その後、コンソールを立ち上げてLinuxコンテナを再起動させましょう。クリップボード共有も治ったりします。ナゾです。
gVim上でもマウスカーソルが表示されるようになります。使いませんが。
・・・これを行うことで、なぜかついでにChromeOSごと再起動されてしまうこともありますが、キニシナイ!(セーブはこまめに!)
ついでに、ターミナルの起動についてのtipsをば。
普通にランチャからターミナルを起動すると、もう一度「penguin」をクリックしないといけないという、余分なワンクッションが入ります。
ターミナルのアイコンを タスクトレイ? シェルフ(Windowsで言うところの、タスクバーみたいなとこ)に固定しておいて、固定したターミナルのアイコンを2本指タッチしてメニューから「penguin」を選択することで、一撃でターミナルを起動することができるようになります。
備忘までにアイコン固定のやり方は、実行中のアイコンを2本指タッチして出てくるメニューから「固定」を選択します。
最後に
思ったよりも、すんなりと設定できました。
軽い、復帰も早い、蓋を閉じれば即カバンに放り込める。という状態で、気軽にVimを持ち運べるようになりました。
総じて、良い買い物でした。