4

在Windows 7 64 位上安装ack后(例如使用StrawberryPerl),我可以从 Windows 中的cmd终端运行ack 。

但是,如果我尝试在 Shell 模式下(即在缓冲区中)在 Emacs 中使用ackM-x shell,我不会得到输出(尽管所有其他cmd命令都可以正确打印)。

有趣的是,如果我单独运行ack(即不带参数),我会正确打印ack使用信息。换句话说,当我使用参数运行ack时,它不会在我的 Emacs shell 中打印输出(即使ack应该为我的查询打印命中,正如我在cmd下检查过的那样)。

缺少输出使我认为 ack 正在等待输入(尽管我为其提供了参数)。我尝试了我的 .emacs 文件中建议的代码片段(它似乎旨在帮助确认在文件系统或 STDIN 中搜索时感到困惑),但问题仍然存在。

对于如何解决这个问题,有任何的建议吗?

谢谢

4

2 回答 2

2

ack正在等待标准输入,错误地认为它处于过滤模式。作为一种解决方法,添加<NUL到命令的末尾,关闭其标准输入。

仅供参考- 在 perl 调试器中运行“ack”,在 Windows 上的 emacs shell 中,显示它在这里停止:

main::print_matches_in_resource(c:/Strawberry/perl/site/bin/ack:454):
454:            while ( <$fh> ) {
于 2016-01-21T03:12:10.023 回答
1

你检查过 ack.el吗?

这就是我在 Windows 7 上使用的。它使使用 ack 更容易。默认情况下,它建议在点搜索单词。并且您通过编译获得输出,因此您可以轻松跳转到包含匹配项的文件和行。

于 2011-07-18T05:08:36.570 回答