2010-06-28 46 views
3

我在emacs中使用內置的f3/f4綁定來記錄和重複宏,並發現它是一個非常強大和有用的功能,尤其是當與搜索結合使用時。不過,我最近注意到,無論何時我執行查詢替換(默認爲M-S-5),記錄我的宏都會停止!有沒有辦法來防止這種情況?我知道query-replace是交互式的,但如果我3次輸入'y'來替代3次,我認爲宏應該做同樣的事情。查詢 - 取代emacs中的宏?

沒問題我想,當錄製我的宏時,我會做C-u 3 M-S-5,所以它會進行3次更換,因爲我知道這對我所做的事已經足夠了。但顯然查詢替換忽略C-U!通常,宏使用和C-u使用對我來說是無縫的。有沒有辦法讓我們使用查詢替換?

回答

3

用我的Emacs(23.2)和沒有用戶init文件(emacs -q),我發現query-replace工作得很好。這是我的測試

我鍵入:

1 2 3 4 5 
1 2 3 4 5 
1 2 3 4 5 
1 2 3 4 5 
1 2 3 4 5 
1 2 3 4 5 
1 2 3 4 5 
1 2 3 4 5 

我光標移動到文本塊

<f3> M-S-5 3 RET tj RET y y y q <f4> 

的頂部這給我留下了:

1 2 tj 4 5 
1 2 tj 4 5 
1 2 tj 4 5 
1 2 3 4 5 
1 2 3 4 5 
1 2 3 4 5 
1 2 3 4 5 
1 2 3 4 5 

<f4> again le ft我與:

1 2 tj 4 5 
1 2 tj 4 5 
1 2 tj 4 5 
1 2 3 4 5 
1 2 tj 4 5 
1 2 tj 4 5 
1 2 tj 4 5 
1 2 3 4 5 

按預期工作。我建議使用emacs -q來確保您沒有任何影響行爲的自定義設置。

+0

我按Ctrl-G出於習慣退出查詢替換,但它由於某種原因也結束了宏記錄。 – 2010-06-29 14:56:07

+0

儘管我仍然很想知道如何使它與C-u一起工作;) – 2010-06-29 14:56:50

+1

@JosephGarvin'C-g'中斷當前的命令,在你的情況下是錄製鍵盤宏。請參閱http://www.gnu.org/software/emacs/manual/html_node/emacs/Quitting.html – 2010-06-29 15:24:05