Next: , Up: グラフィカルなディスプレイでのカットアンドペースト   [Contents][Index]


13.3.1 クリップボードを使う

クリップボード(clipboard)とは、ほとんどのグラフィカルなアプリケーションが、“カットアンドペースト”のために使う機能です。もしクリップボードが存在する場合、Emacsのkillおよびyankコマンドもそれを使います。

何らかのテキストを、C-w (kill-region)のようなコマンドでkillしたり、M-w (kill-ring-save)のようなコマンドでkillリングにコピーしたとき、そのテキストはクリップボードにも転送されます。

Emacsのkillコマンドがテキストをクリップボードに転送すると、通常ならクリップボードの既存の内容は失われます。古いクリップボードデータの喪失を防ぐために、Emacsはオプションでクリップボードの既存コンテンツをkillリングに保存できます。save-interprogram-paste-before-killを数値にセットすると、そのデータの文字数がこの数値より小さければkillリングにコピー、数値以外の非nil値なら常にコピーされます(データが大きくなるとメモリー消費が増えるというリスクがある)。

C-y (yank)のようなyankコマンドもクリップボードを使います。他のアプリケーションがクリップボードを“所有”する場合(たとえばEmacsで最後にkillコマンドを実行した後に、他のアプリケーションでテキストをカットまたはコピーした場合)、Emacsはkillリングではなくクリップボードからyankします。

通常killリングをM-y (yank-pop)で巡回することでは、クリップボードは変更されません。しかしyank-pop-change-selectiontに変更すると、M-yは新しいyankをクリップボードに保存します。

killおよびyankコマンドがクリップボードにアクセスしないようにするには、変数select-enable-clipboardnilに変更してください。

プログラムは平文テキスト以外のオブジェクトをクリップボードに置くことができます。たとえばウェブブラウザではイメージ上で通常は“Copy Image(イメージをコピー)”を選択でき、それによってイメージがクリップボードに配置されます。プラットフォームが対応していれば、yank-mediaコマンドによってEmacsがそれらのオブジェクトをyankできます。ただしこれをサポートしているモードに限られます(Yanking Media in The Emacs Lisp Reference Manualを参照)。

多くのXデスクトップ環境は、クリップボードマネージャー(clipboard manager)と呼ばれる機能をサポートします。もしEmacsがクリップボードのデータの現在の“持ち主”のときにEmacsを終了し、そのときクリップボードマネージャーが実行されていると、Emacsはクリップボードのデータをクリップボードマネージャーに転送するのでデータは失われません。ある状況において、これはEmacsが終了するが遅くなる原因となります。Emacsがクリップボードマネージャーにデータを転送しないようにするには、変数x-select-enable-clipboard-managernilに変更してください。

通常、クリップボードを通じて渡されるNULバイトを含む文字列は切り詰められるため、Emacsはシステムのクリップボードに転送する前に、そのような文字を“\\0”に置き換えます。

Emacs 24以前は、killおよびyankコマンドは、クリップボードではなくプライマリー選択(他のウィンドウアプリケーションにたいするカットアンドペーストを参照してください)を使っていました。もしこのほうがよいなら、select-enable-clipboardnilselect-enable-primarytmouse-drag-copy-regiontに変更してください。この場合は、次のコマンドを使って、クリップボードに明示的にアクセスできます。リージョンをkillしてクリップボードに保存するにはclipboard-kill-region、リージョンをkillリングにコピーするとともにクリップボードに保存するにはclipboard-kill-ring-save、クリップボードの内容をポイント位置にyankするにはclipboard-yankです。