代码之家  ›  专栏  ›  技术社区  ›  Joseph Garvin

查询替换Emacs中的宏?

  •  3
  • Joseph Garvin  · 技术社区  · 14 年前

    我经常在Emacs中使用内置的f3/f4绑定来记录和重复宏,并发现它是一个非常强大和有用的功能,特别是与搜索结合使用时。但是,我最近注意到,每当我执行查询替换(默认情况下为M-S-5)时,记录宏都会停止!有没有办法防止这种情况发生?我知道查询替换是交互式的,但是如果我输入“y”3次来进行3次替换,我认为宏也应该这样做。

    没问题,我想,当记录我的宏时,我会做C-U 3 M-S-5,所以它会做3次替换,因为我知道这对我所做的足够好。但显然,查询替换忽略了C-U!通常宏使用和C-U使用对我来说是无缝的。有没有一种方法可以让它们与查询替换一起工作?

    1 回复  |  直到 14 年前
        1
  •  3
  •   Trey Jackson    14 年前

    我的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
    

    紧迫的 <F4 & GT; 再次给我留下:

    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 以确保您没有任何影响行为的自定义设置。