emacs - 在 emacs 中查询替换宏?

标签 emacs macros keyboard-shortcuts text-editor elisp

我经常使用 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/

相关文章:

delphi - 如何检测非修饰键组合?

c++ - 抑制 emacs 中的 c++ 命名空间缩进

c++ - 在 C++ 中定义简单宏时出错

c++ - 可变参数模板计数参数,省略号作为参数传递

c - 我如何限制宏对我的函数的使用,就像 C++ 中的 private 一样?

javascript - 用我自己的自定义快捷方式覆盖浏览器快捷方式

ios - 以编程方式隐藏键盘快捷键栏iOS 13

windows - Emacs latex 模式下的文件名编码

emacs - 如何在 verilog 模式下使用正则表达式删除 I/O 端口声明

php - 使用闭包时如何修复 php 模式缩进