我可以在Emacs中为yanks保留相同的项目吗?

时间:2010-09-24 12:08:25

标签: emacs

我在Emacs中经常做的事情是剪切一些文本,然后用剪切文本替换另一个位。所以,我说我想要作为我kill-ring中最后一项的文字。我把它拉到新的地方,然后杀死已经存在的文本。但现在被杀死的文本是kill-ring中的最新项目。所以下次我要抓第一个项目时,我必须做 C-y M-y 。然后下一次kill-ring中有两个最近的项目,所以我必须做 C-y M-y M-y ,依此类推。

我猜这是有更好的方法。有人可以开导我吗?

5 个答案:

答案 0 :(得分:9)

有几种选择:

  1. 开启delete-selection-mode,并使用 C-d 删除删除区域而不触及杀戮戒指。
  2. 使用 C-x r s i 将文本保存到寄存器i,稍后, C-x r i i 插入保存的文本。
  3. 如果要替换的文本模式可以用正则表达式捕获,请使用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

相关问题