2013-05-02 64 views
4

在emacs中使用查詢替換(帶或不帶regexp)時,先前的查詢替換對在下次調用查詢替換時被記住並建議爲默認值。但我希望能夠將此默認替換編輯爲類似的內容,而不必鍵入整個新變體。在emacs query-replace中編輯以前的搜索字符串?

像這樣:

的長文檔中的部分

我做了以後查詢替換

M-% antidisestablishmentarianism-A [return] antidisestablismentarianism-B 

同一文檔我想做

M-% antidisestablishmentarianism-A [return] antidisestablismentarianism-C 

的命令M-自己給出

Query-replace (default antidisestablishmentarianism-A -> antidisestablismentarianism-B): 

是否有一些魔術鍵組合可以在不重新輸入的情況下將最終「B」更改爲「C」?

回答

6

嚴,嘗試M-P-,這樣的序列

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

謝謝! M-p確實是我不知道的魔法按鈕。 Experiment和emacswiki確認M-p在minibuffer歷史記錄中提供了前一個命令 - 因此通過改變「M-p」的數量可以編輯查詢,替換字符串或兩者。 – 2013-05-02 15:24:24

+1

只是要詳細說明@Alice Lesser的有用評論:M-p爲您正在執行的特定命令的過去調用恢復了小緩衝區歷史記錄。它可以是多種命令中的任何一種,而不僅僅是查詢替換。因此,將它與ido-find-file一起使用只會帶來與ido-find-file一起使用的字符串,等等。 – Alan 2015-10-08 15:30:41

1

我也可以用C-R。它向我展示了minibuffer中的所有條目,我可以從中選擇。我將C-r綁定到M-x任何-minibuffer-history。在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