在 Windows 7 64 位上安装 ack 后(例如使用 StrawberryPerl ),我可以从 cmd 终端运行 ack window 。
但是,如果我尝试在 Emacs 中以 Shell 模式使用 ack(即在 M-x shell
缓冲区中),我将无法输出(所有其他 cmd 命令打印正确)。
有趣的是,如果我单独运行 ack - 即没有参数 - 我会得到正确打印的 ack 使用信息。换句话说,当我使用参数运行它时,ack 在我的 Emacs shell 中不打印任何输出(即使 ack 应该为我的查询打印命中,正如我在 下检查的那样>命令)。
缺少输出让我认为 ack 正在等待输入(尽管我为它提供了参数)。我尝试了建议的代码片段 here在我的 .emacs 文件中(这似乎是为了在文件系统或 STDIN 中搜索混淆时帮助确认),但问题仍然存在。
关于如何解决这个问题有什么建议吗?
谢谢
最佳答案
ack 正在等待标准输入,错误地认为它处于过滤模式。作为解决方法,添加 <NUL
到命令末尾,关闭其标准输入。
仅供引用 - 在 Windows 上的 emacs shell 中的 perl 调试器中运行“ack”,显示它在此处停止:
main::print_matches_in_resource(c:/Strawberry/perl/site/bin/ack:454):
454: while ( <$fh> ) {
关于windows - Emacs for Windows 中 shell 模式下的 Ack 显示无输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4535226/