クリップボード(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-selection
をt
に変更すると、M-yは新しいyankをクリップボードに保存します。
killおよびyankコマンドがクリップボードにアクセスしないようにするには、変数select-enable-clipboard
をnil
に変更してください。
プログラムは平文テキスト以外のオブジェクトをクリップボードに置くことができます。たとえばウェブブラウザではイメージ上で通常は“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-manager
をnil
に変更してください。
通常、クリップボードを通じて渡されるNULバイトを含む文字列は切り詰められるため、Emacsはシステムのクリップボードに転送する前に、そのような文字を“\\0”に置き換えます。
Emacs 24以前は、killおよびyankコマンドは、クリップボードではなくプライマリー選択(他のウィンドウアプリケーションにたいするカットアンドペーストを参照してください)を使っていました。もしこのほうがよいなら、select-enable-clipboard
をnil
、select-enable-primary
をt
、mouse-drag-copy-region
をt
に変更してください。この場合は、次のコマンドを使って、クリップボードに明示的にアクセスできます。リージョンをkillしてクリップボードに保存するにはclipboard-kill-region
、リージョンをkillリングにコピーするとともにクリップボードに保存するにはclipboard-kill-ring-save
、クリップボードの内容をポイント位置にyankするにはclipboard-yank
です。