我在Emacs中经常做的事情是剪切一些文本,然后用剪切文本替换另一个位。所以,我说我想要作为我kill-ring
中最后一项的文字。我把它拉到新的地方,然后杀死已经存在的文本。但现在被杀死的文本是kill-ring
中的最新项目。所以下次我要抓第一个项目时,我必须做 C-y M-y 。然后下一次kill-ring
中有两个最近的项目,所以我必须做 C-y M-y M-y ,依此类推。
我猜这是有更好的方法。有人可以开导我吗?
答案 0 :(得分:9)
有几种选择:
delete-selection-mode
,并使用 C-d 或删除删除区域而不触及杀戮戒指。query-replace-regexp
( C-M - %)。答案 1 :(得分:6)
您应该使用delete-region
代替kill-region
。
delete-region
删除该区域而不将其置于杀戮戒指中。它默认绑定到<menu-bar> <edit> <clear>
。
如果您只想在不使用菜单的情况下使用默认绑定,可以将delete-rectangle
与 Cx r d 一起使用但是它适用于矩形。在像delete-region
这样的单行上使用它可能会很好。
答案 2 :(得分:4)
Emacs中最古老,保存最完好的秘密之一 - 不知道为什么:Emacs有 次要选择 。
这正是它的好处。它会一次又一次地保存您要使用的另一种文本。
选择一些文字,然后将辅助设备拉入以替换它。在别处重复。通常,这比查询替换更方便,更灵活,更精确。
请看一下,为了你自己的利益 - 也许它会停止成为一个鲜为人知的特征...... http://www.emacswiki.org/emacs/SecondarySelection
答案 3 :(得分:2)
我写了这个函数来弹出kill-ring中的最新项目:
(defun my-kill-ring-pop ()
"Pop the last kill off the ring."
(interactive)
(when kill-ring
(setq kill-ring (cdr kill-ring)))
(when kill-ring-yank-pointer
(setq kill-ring-yank-pointer kill-ring))
(message "Last kill popped off kill-ring."))
所以在我杀了一些我不想留下的东西之后,我点了一把叫它的钥匙。
答案 4 :(得分:0)
与此相关的是M-x browse-kill-ring
。如果您使用M-x anything
,则还可以使用M-x anything-show-kill-ring
。