我经常使用 emacs 中的内置 f3/f4 绑定(bind)来记录和重复宏,发现它是一个非常强大和有用的功能,尤其是与搜索结合使用时。但是,我最近注意到,每当我执行查询替换(默认为 M-S-5)时,我的宏记录就会停止!有没有办法防止这种情况?我知道查询替换是交互式的,但如果我输入“y”3 次来执行 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
我将光标移动到该文本 block 的顶部
<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
以确保您没有任何影响行为的自定义。
关于emacs - 在 emacs 中查询替换宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3136053/