ふるきのガベージコレクション2

脳内を通り過ぎたイメージの残骸の記録

Crostini上のCLI版Vimで日本語入力とChromeOSクリップボード連携

ChromebookLinux環境であるCrostiniを何とか使ってやろうと作業を続けている。Crostini上でもVimは使えるのだが、日本語入力をしようとすると手間がかかる。以下はfcitx-mozcが導入されていてGNOME端末上で日本語入力ができている状況を前提とした話。

最初にGUIVim(コマンドではgvim、パッケージではvim-gtk3)では日本語のインライン入力ができないので、検討対象外とする。

Crostini純正端末上でもCLIVimは動くが、純正端末では日本語が入力できない。そこで、純正端末からGNOME端末を起動し、その上でCLIVimを使うことになる。これで日本語入力も問題なくなった。

次の問題としてCLIVimとChromeOSクリップボードとのやり取り。通常のLinux環境(Ubuntuなど)では、Vimでの "+y コマンドで選択範囲をシステムクリップボードにコピーできるのだが、Crostini環境では機能しない。また、GNOME端末でのGUIコピー(Shift+Ctrl+c)では、表示どおりに改行もコピーしてしまうため、貼付け後の整形が必要になる。そこで以下の手順でたいおう。

まずWayland(CrostiniはXではなくWayland)環境でクリップボードを扱うためのwl-clipboardをインストール。
$ sudo apt install wl-clipboard

以下の操作
 -- GNOME端末上でCLIVimを起動
 -- 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

How can I copy from Vim to system clipboard? : Crostini