ChromebookのLinux環境であるCrostiniを何とか使ってやろうと作業を続けている。Crostini上でもVimは使えるのだが、日本語入力をしようとすると手間がかかる。以下はfcitx-mozcが導入されていてGNOME端末上で日本語入力ができている状況を前提とした話。
最初にGUI版Vim(コマンドではgvim、パッケージではvim-gtk3)では日本語のインライン入力ができないので、検討対象外とする。
Crostini純正端末上でもCLI版Vimは動くが、純正端末では日本語が入力できない。そこで、純正端末からGNOME端末を起動し、その上でCLI版Vimを使うことになる。これで日本語入力も問題なくなった。
次の問題としてCLI版VimとChromeOSクリップボードとのやり取り。通常のLinux環境(Ubuntuなど)では、Vimでの "+y コマンドで選択範囲をシステムクリップボードにコピーできるのだが、Crostini環境では機能しない。また、GNOME端末でのGUIコピー(Shift+Ctrl+c)では、表示どおりに改行もコピーしてしまうため、貼付け後の整形が必要になる。そこで以下の手順でたいおう。
まずWayland(CrostiniはXではなくWayland)環境でクリップボードを扱うためのwl-clipboardをインストール。
$ sudo apt install wl-clipboard
以下の操作
-- GNOME端末上でCLI版Vimを起動
-- shift-Vから範囲を選択(行が反転表示される)
-- 以下のコマンドを入力(選択範囲を書込み、書込み先はwl-copyのstdin)
:'<,'>w !wl-copy ('<,'>は:を入力した時点で自動入力される)
-- ChromeOSのシステムクリップボードにコピーされている。
逆のコピーは
-- ChromeOS側で文字列をコピー
-- 以下のコマンドでカーソル行の下に貼り付け
:r !wl-paste
コマンドが長くなるので、マクロに登録するとよいかもしれない。
また、僕のニーズは行単位でのコピーなので上記で足りているが、文字列単位でのコピーの場合もうひと工夫必要なのかもしれない(未確認)。
最初に"+yが使えないとわかった時はがっくり来たが、xselのことを思い出して検索するうちにwl-clipboardが見つかり、一気に解決してしまった。
情報源
ChromebookのCrostiniでxselとかでclipboardにコピーできない問題 - simple-web-system technology