我可以为Emacs中的美国佬保留相同的物品吗?

我可以为Emacs中的美国佬保留相同的物品吗?,emacs,Emacs,我在Emacs中经常做的事情是剪切一点文本,然后用剪切的文本替换另一点。所以,假设我已经得到了我想要拉扯的文本,作为我的杀人环中的最后一项。我把它拉到新的地方,然后删除已经存在的文本。但是现在,kill文本是kill ring中的最新项。所以下一次我想拉第一个项目,我必须做C-y M-y。然后下一次在压井环中有两个较新的项目,所以我必须做C-y M-y M-y,依此类推 我想有更好的办法。有人能告诉我吗?你应该使用delete region而不是kill region delete region

我在Emacs中经常做的事情是剪切一点文本,然后用剪切的文本替换另一点。所以,假设我已经得到了我想要拉扯的文本,作为我的
杀人环中的最后一项。我把它拉到新的地方,然后删除已经存在的文本。但是现在,kill文本是
kill ring
中的最新项。所以下一次我想拉第一个项目,我必须做C-y M-y。然后下一次在
压井环中有两个较新的项目,所以我必须做C-y M-y M-y,依此类推


我想有更好的办法。有人能告诉我吗?

你应该使用
delete region
而不是
kill region

delete region
删除区域而不将其放入压井环。默认情况下,它绑定到


如果您只想使用默认绑定而不使用菜单,那么可以将
delete rectangle
与C-xrd一起使用,但它可以在rectangle上工作。可以在一行中使用它,如
删除区域

我编写了此函数,以从压井环中弹出最新的项目:

(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."))
所以,在我杀死了一些我不想保留的东西后,我按了一个键,这个键称之为。

有几种选择:

  • 打开
    删除选择模式
    ,在不接触压井环的情况下使用C-d或delete删除区域
  • 使用C-x r s i将文本保存到寄存器i,然后使用C-x r i插入保存的文本
  • 如果要替换的文本模式可以在正则表达式中捕获,请使用
    query replace regexp
    (C-M-%)

  • Emacs中最古老和最保守的秘密之一——不知道为什么:Emacs有一个二次选择

    这正是它的好处所在。它会一次又一次地保存另一个供您使用的文本选择

    选择一些文本,然后拉入辅助文本以替换它。在别处重复。通常,这比查询替换之类的操作更方便、灵活和精确

    为了你自己的利益,请看一看——也许它将不再是一个鲜为人知的功能。。。

    与此相关的是
    M-x browse压井环
    。如果您使用
    M-x anything
    ,您也可以使用
    M-x anything show kill ring

    而不知道任何其他方法。你可能可以保存在一个寄存器中,但我自己没有用过。你发现了一个关于杀人戒指的关键问题。最新使用的项目最有可能重复使用。所以你不想按时间顺序排列戒指。输入我的LRU-yank包。我用它用更少的按键来拉有用的东西。谢谢。我正在寻找一种不必每次都执行
    m-x kill region
    的方法,我不想添加新的键绑定。使用标准键绑定无法做到这一点吗?您可以通过在微型缓冲区中拖动要用于替换其他内容的内容来执行查询替换(M-%)操作:M-%thestringtoreplace RET C-y RET@Jérôme是的,我认为你是对的。唯一的问题是每次替换的字符串必须是相同的,而我希望能够用相同的字符串手动替换不同的内容。我认为这是一件使用标准文本编辑器(即使用Ctrl-C然后使用Ctrl-V)比使用Emacs容易得多的事情。为了以防万一,我会将问题保留一天,但如果没有其他答案,请将其标记为完成。我在“删除矩形”上添加了一个单词,可以像在单行上删除区域一样使用,删除矩形默认有一个键绑定。谢谢-这是一个方便的小东西。出于好奇,你把它绑定到了什么?很好-谢谢。有没有一点可以让你停止学习Emacs?!在这个场景中,我使用寄存器。它们通常很方便,因为您可以拥有多个!