クリップボードは、ほとんどのグラフィカルアプリケーションが「切り取りと貼り付け」に使用する機能です。クリップボードが存在する場合、Emacsのkillコマンドとyankコマンドはこれを利用します。
C-w (kill-region)
などのコマンドでテキストをキルしたり、M-w (kill-ring-save)
などのコマンドでキルリングにコピーしたりすると、そのテキストはクリップボードにも格納されます。
Emacsのキルコマンドでテキストがクリップボードに格納されると、通常は既存のクリップボード内容が失われます。オプションで、Emacsは既存のクリップボード内容をキルリングに保存でき、これにより古いクリップボードデータの消失を防ぐことができます。save-interprogram-paste-before-killに数値が設定されている場合、データ(文字数)がその数値より小さければ、データはコピーされます。この変数がnil以外の値である場合、データは常にコピーされます。ただし、そのデータが大容量である場合、メモリ消費量が増大するリスクがあります。
C-y (yank)
などのヤンクコマンドも、クリップボードを利用します。別のアプリケーションがクリップボードを「占有」している場合――つまり、Emacsでの直近のキルコマンドよりも最近、そこでテキストを切り取りまたはコピーした場合――Emacsはキルリングではなくクリップボードからヤンクします。
通常、M-y (yank-pop)
でキルリングを回転させても、クリップボードは変更されません。ただし、yank-pop-change-selection を t
に変更すると、M-y が新しいヤンクをクリップボードに保存します。
kill や yank コマンドがクリップボードにアクセスするのを防ぐため、変数 select-enable-clipboard を nil
に変更してください。
プログラムは、プレーンテキスト以外のものもクリップボードに格納できます。例えば、ウェブブラウザでは通常、画像に対して「画像をコピー」を選択でき、その画像がクリップボードに格納されます。対応しているプラットフォームでは、Emacsは
yank-media
コマンドでこれらのオブジェクトをヤンクできます――ただし、これをサポートするモードに限られます。デフォルトでは、クリップボード内で利用可能な優先メディアタイプが自動的に選択されますが、コマンドにプレフィックス引数を指定することでこの動作を上書きできます(The Emacs Lisp Reference Manual の Yanking
Media を参照してください)。
多くのXデスクトップ環境では、クリップボードマネージャと呼ばれる機能がサポートされています。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
に変更してください。この場合、クリップボードに対して明示的に操作を行うには、以下のコマンドを使用できます。clipboard-kill-region はリージョンをキルしてクリップボードに保存し、clipboard-kill-ring-save
はリージョンをキルリングにコピーしてクリップボードに保存し、clipboard-yank
はクリップボードの内容をポイントにヤンクします。