在Windows 7 64位(例如使用StrawberryPerl )上安装ack之后,我可以从Windows的cmdterminal运行ack 。
但是,如果我尝试在shell模式(即在Mx shell
缓冲区)中使用Emacs中的ack ,我不会输出(尽pipe所有其他cmd命令都可以正确打印)。
有趣的是,如果我单独运行确认 (即没有参数),我会正确打印确认使用信息。 换句话说,当我使用参数运行时(即使ack应该打印命中我的查询,因为我已经在cmd下进行检查), ack在我的Emacs shell中没有输出。
缺乏输出使我认为ack正在等待input(尽pipe我提供了参数)。 我尝试了在我的.emacs文件中提供的代码片段(这似乎是为了在文件系统或STDIN中search时遇到困惑而devise的),但问题仍然存在。
对于如何解决这个问题,有任何的build议吗?
谢谢
ack正在等待stdin,错误地认为它是在过滤模式下。 作为解决方法,将<NUL
添加到命令的末尾,关闭其标准输入。
仅供参考 – 在Windows下的emacs shell中的perl调试器中运行“ack”,显示它停在这里:
main::print_matches_in_resource(c:/Strawberry/perl/site/bin/ack:454): 454: while ( <$fh> ) {
你检查过ack.el吗?
这就是我在Windows 7上使用的方式。它使得使用ack更容易。 默认情况下,建议在点上搜索单词。 而且你通过编译得到输出,所以你可以很容易地跳转到包含匹配的文件和行。