screen から文字列を X のクリップボードへコピー

GNU screen 上でコピーした文字列を X のクリップボード (を経由して Emacs など) にもっていきたいことがままある。これまではちょっとみっともない方法で実現していたので、見直してみた。

必要な手順は

C-a C-[ Y

例えばこの操作でカーソル位置の行全体がペーストバッファにコピーされる。

C-a >

これでペーストバッファの内容を /tmp/screen-exchange に書き込む。

% xclip /tmp/screen-exchange

シェルからこんなコマンドを叩けばめでたく screen → X にコピー完了。

この2番目と3番目を手数少なくスマートにやってやればよい。ちょっと試した結果

bind y eval writebuf "exec !!! xclip /tmp/screen-exchange"

こんなのを ~/.screenrc に追加してやれば C-a y でダダーンとコピーできた。ここのキモは fdpat に !!! を指定してやること。これに気付かずに暫くハマった。


以前よりだいぶマシになったけどまだエレガントじゃないよなあ。うまくやればファイルを介さずに screen から直接 xclip に渡せる気がするんだがどうもうまくいかない。オペレーションももうちょっと短かくしたいけどいい手ないかなあ…。