Crtl + BackspaceまたはCtrl + Delを使用すると、削除されたテキストがキルリングに追加されます。
これを防ぐにはどうすればよいですか?テキストが削除されたときに、キルリングにテキストを送信する必要はありません。
副次的な質問:とにかくこのデフォルト設定の目的は何ですか?:)
Crtl + BackspaceまたはCtrl + Delを使用すると、削除されたテキストがキルリングに追加されます。
これを防ぐにはどうすればよいですか?テキストが削除されたときに、キルリングにテキストを送信する必要はありません。
副次的な質問:とにかくこのデフォルト設定の目的は何ですか?:)
回答:
ドキュメントによると:
<C-delete>
コマンドkill-word(global-mapにあります)を実行し‘simple.el’
ます。これは、のインタラクティブなコンパイル済みLisp関数です。にバインドされてい
<C-delete>, M-d
ます。(キルワードARG)
単語の終わりに達するまで文字を前方に殺します。引数ARGを使用して、これを何度も行います。
それでは、ソースコードを参照しましょう。
(defun kill-word (arg)
"Kill characters forward until encountering the end of a word.
With argument ARG, do this that many times."
(interactive "p")
(kill-region (point) (progn (forward-word arg) (point))))
次に、kill-region
関数のドキュメント内で見つけます:
ポイントとマークの間のテキストをキル(「カット」)します。
This deletes the text from the buffer and saves it in the kill ring
。コマンド[yank]はそこから取得できます。(リージョンを強制終了せずに保存する場合は、[kill-ring-save]を使用します。)[...]
Lispプログラムは、テキストを削除するためにこの関数を使用する必要があります。(テキストを削除するには、を使用します
delete-region
。)
さて、さらに先に進みたい場合、これはキルリングにコピーせずに削除するために使用できる機能です:
(defun my-delete-word (arg)
"Delete characters forward until encountering the end of a word.
With argument, do this that many times.
This command does not push text to `kill-ring'."
(interactive "p")
(delete-region
(point)
(progn
(forward-word arg)
(point))))
(defun my-backward-delete-word (arg)
"Delete characters backward until encountering the beginning of a word.
With argument, do this that many times.
This command does not push text to `kill-ring'."
(interactive "p")
(my-delete-word (- arg)))
(defun my-delete-line ()
"Delete text from current position to end of line char.
This command does not push text to `kill-ring'."
(interactive)
(delete-region
(point)
(progn (end-of-line 1) (point)))
(delete-char 1))
(defun my-delete-line-backward ()
"Delete text between the beginning of the line to the cursor position.
This command does not push text to `kill-ring'."
(interactive)
(let (p1 p2)
(setq p1 (point))
(beginning-of-line 1)
(setq p2 (point))
(delete-region p1 p2)))
; bind them to emacs's default shortcut keys:
(global-set-key (kbd "C-S-k") 'my-delete-line-backward) ; Ctrl+Shift+k
(global-set-key (kbd "C-k") 'my-delete-line)
(global-set-key (kbd "M-d") 'my-delete-word)
(global-set-key (kbd "<M-backspace>") 'my-backward-delete-word)
Emacsの24ので、設定がなくても、あなたはそれを選択し、押してキルリングにそれを追加することなく、任意のテキストを削除することができますBackspaceかDelete。マークがアクティブな場合、これらのキーはカーソルの前後の文字を削除するだけでなく、リージョンを削除します。
つまり、削除するテキストの一方の端に移動してCtrl+を押しSpace、もう一方の端に移動して、強調表示された領域を削除Backspace(またはDelete)します。または、一方の端に移動し、Shift移動キーを使用してもう一方の端に移動し、を押しBackspaceます。
undo
。しかし、ワイルドな推測。