Next: , Up: Cut and Paste   [Contents][Index]


12.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に変更してください。

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

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

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