いくつかの特別なバッファーは、読み取り専用(read-only)のテキストを含んでいて、それらは変更できないのでkillもできません。killコマンドは読み取り専用のバッファーにたいして特別な動作をします。バッファーから実際にテキストを削除せずに、killリングにコピーします。通常はビープ音をならし、その旨のエラーメッセージを表示します。しかし変数kill-read-only-ok
を非nil
にセットすると、なぜテキストが消去されないのかをエコーエリアにメッセージ表示します。
killした文字列をkillリングに保存する前に、kill-transform-function
を使用してその文字列を変換できます。これはkillされた文字列で呼び出されて、killリングに保存したい文字列をリターンする必要があります。nil
もリターンでき、その場合には文字列はkillリングに保存されません。たとえば空白のみの文字列をkillリングに保存したくなければ、以下のようにできます:
(setq kill-transform-function (lambda (string) (and (not (string-blank-p string)) string)))
変数kill-do-not-save-duplicates
を非nil
に変更すると、同じものにたいするkillは重複なくkillリングの1つのエントリーとなります。
マイナーモードkill-ring-deindent-mode
を有効にすると、kill
リングに保存されるテキストのインデントが、最初に保存した行のインデント分減らされます。つまりこのマイナーモードは保存された最初の行がn列にインデントされていれば、保存され行それぞれからその列数文のインデントを削除するのです。