我在emacs中大量使用了内置的f3 / f4绑定来记录和重复宏,并发现它是一个非常强大且有用的功能,尤其是与搜索结合使用时。但是,最近我注意到,每当执行查询替换(默认情况下为M-S-5)时,录制宏的操作都会停止!有办法防止这种情况吗?我知道query-replace是交互式的,但是如果我输入3次“y”以进行3次替换,则我认为宏应该执行相同的操作。

我认为没问题,在录制宏时,我会执行C-u 3 M-S-5,因此它将执行3次替换,因为我知道这对我的工作已经足够了。但显然查询替换会忽略C-u!通常,宏使用和C-u使用对我来说是无缝的。有没有一种方法可以使它们与查询替换一起使用?

最佳答案

使用我的Emacs(23.2)并且没有用户初始化文件(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

再次按键使我处于:
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来确保您没有任何影响行为的自定义设置。

09-20 22:18