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 に渡せる気がするんだがどうもうまくいかない。オペレーションももうちょっと短かくしたいけどいい手ないかなあ…。