【问题标题】:How to use ack with M-x find-grep?如何将 ack 与 M-x find-grep 一起使用?
【发布时间】:2011-10-18 19:03:24
【问题描述】:

在这里留下问题以供参考。只有主知道为什么,但从前这对我不起作用,促使我问这个问题,但今天它确实起作用了。典型的血腥emacs。同样通常,一旦你与它搏斗了一下,这将是一种完全的快乐。 YMMV。

这两个命令:

find ~/myco -type f -print0 | xargs -0 -e grep -nH -e "setjmp"

和

ack --no-heading --no-color "setjmp" ~/myco

在我看来,在终端上会产生非常相似的结果。

然而,当我尝试在 emacs 中使用第二个作为带有 M-x find-grep 的命令时,它只是打印结果,而不是像第一个那样超链接和突出显示它们。

有人知道发生了什么吗?在命令行中使用 ack 的初步实验表明,它将 find 和 grep 排除在外,所以如果能够在 emacs 中使用它也很好。

【问题讨论】:

  • 你可能使用过“--group”,它必须放在“--no-heading”之前。

标签: emacs find grep ack find-grep


【解决方案1】:

在 Windows 上,我从 find-grep 调用 ack,例如像这样:

c:/xampp/perl/bin/perl.exe c:/bin/ack-standalone.txt --type-set java=.java --type=java -i information

它运行良好。结果在 grep 缓冲区中被链接和着色。我不知道为什么它对你不起作用,但我可以说它在这里起作用。

emacs 版本:GNU Emacs 23.2.1

确认版本:1.94

【讨论】:

  • 我接受了这个答案,因为今天它也对我有用。
【解决方案2】:

Emacs 尝试在grep-mode 的缓冲区中显示find-grep 的输出。显然grep-mode(惊讶,惊讶)不理解ack 的输出格式。使用专用的ack-mode。

【讨论】:

  • 好吧,我没有对你投反对票,但是这两个命令似乎在控制台上产生了相同的结果,所以问题是 为什么 不理解 grep-mode。感谢您提供 ack-mode 的链接,我会尝试一下。
  • @JohnLawrenceAspden 我刚刚发现了一个类似的问题stackoverflow.com/questions/2322389/… 其他人建议grep-mode 应该与ack 一起使用。我宁愿保持安全并寻求简单的解决方案。 :)
  • 这个答案没用。它也非常适合我,以至于我现在从“ack-mode”切换到“find-grep”!我必须对特定的 ack 和 emacs 版本有什么问题吗?
  • 哎呀,情况并非如此.... 抱歉投反对票(无法收回)。在 Windows 上它工作得几乎完美,因为匹配本身没有突出显示。在 Linux 中,只有在缓冲区中打开 ack 输出并显式应用 grep-mode 时,它​​似乎才有效。
  • @JoaoTavora 您可以收回反对票。只需再次单击否决按钮。无论如何,我试图在评论中指出这可能是一个 Windows 问题。
【解决方案3】:

我发现这种 ack-mode 工作得更好,而且开箱即用。更多的颜色会很好,但至少它是可读的:

https://github.com/sudish/ack-mode.el

【讨论】:

    猜你喜欢
    • 2013-01-13
    • 1970-01-01
    • 2021-08-17
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多