在emacs查询替换中编辑上一个搜索字符串?

在emacs查询替换中编辑上一个搜索字符串?,emacs,Emacs,在emacs中使用查询替换(带或不带regexp)时,将记住上一个查询替换对,并在下次调用查询替换时作为默认值建议。但我希望能够编辑这个默认替换为类似的内容,而不必键入整个新变体 像这样: 在长文档的某个部分中,我执行查询替换 M-% antidisestablishmentarianism-A [return] antidisestablismentarianism-B 稍后在我想做的同一个文档中 M-% antidisestablishmentarianism-A [return] ant

在emacs中使用查询替换(带或不带regexp)时,将记住上一个查询替换对,并在下次调用查询替换时作为默认值建议。但我希望能够编辑这个默认替换为类似的内容,而不必键入整个新变体

像这样:

在长文档的某个部分中,我执行查询替换

M-% antidisestablishmentarianism-A [return] antidisestablismentarianism-B
稍后在我想做的同一个文档中

M-% antidisestablishmentarianism-A [return] antidisestablismentarianism-C
命令M-%本身给出

Query-replace (default antidisestablishmentarianism-A -> antidisestablismentarianism-B):
有没有什么神奇的组合键可以让你不用重新输入就把最后的“B”改成“C”?

是的,试试M-p,类似这样的顺序

M-% M-p [return] M-p [DEL] C [return]

我也可以用C-r。它显示了minibuffer中的所有条目,我可以从中进行选择。我将C-r绑定到M-x任何迷你缓冲区历史记录。在M-x查询替换之后,点击C-h b并在帮助缓冲区中搜索主模式。这将给出完整的命令列表。这是我的装订

C-g abort-recursive-edit TAB self-insert-command C-j exit-minibuffer RET exit-minibuffer C-r anything-minibuffer-history ESC Prefix Command C-tab file-cache-minibuffer-complete down next-history-element next next-history-element prior previous-history-element up previous-history-element M-n next-history-element M-p previous-history-element M-r previous-matching-history-element M-s next-matching-history-element C-g中止递归编辑 制表符自插入命令 C-j出口微型缓冲区 退出微型缓冲区 C-r任何小型缓冲区历史记录 ESC前缀命令 C-tab文件缓存微缓冲区完成 下一个历史元素 下一个历史元素 先前历史元素 上一个历史元素 M-n下一个历史元素 M-p上一历史元素 M-r先前匹配的历史元素 M-s下一个匹配历史元素
非常感谢。M-p确实是我不知道的神奇按钮。实验和emacswiki确认M-p给出了minibuffer历史记录中的前一个命令,因此通过改变“M-p”的数量,可以编辑查询、替换字符串或两者。请详细说明@Alice Lesser的有用评论:M-p为您正在执行的特定命令的过去调用返回minibuffer历史记录。它可以是许多命令中的任意一个,而不仅仅是查询替换。因此,将它与ido find file一起使用只会带回ido find file使用过的字符串,等等。这更神奇!