4

我正在尝试使用ack-grep作为 Windows 上 Emacs 中 grep + find 的替代品,但 ack-grep 立即(成功)退出而不打印任何匹配项。我已经尝试了 ack-grep 的几乎所有可能的命令行参数组合,但似乎没有任何效果。

M-x grep-find

输入“ack html”搜索包含“html”的文件。Ack 立即退出,不打印任何内容:

-*- mode: grep; default-directory: "c:/" -*-
Grep started at Tue Feb 23 23:50:52

ack html

Grep finished (matches found) at Tue Feb 23 23:50:52

执行相同的命令“ack html”cmd.exe可以正常工作(显示大量包含字符串“html”的各种文件。

有任何想法吗?

4

3 回答 3

8

在 Windows 中的 Emacs 下运行 ack 时,我发现它有时会混淆它是应该搜索文件还是从 STDIN 读取。这是我用来调用 ack (use M-x ack) 的函数。你可以把这个放进去.emacs

(defvar ack-command "ack --nogroup --nocolor ")
(defvar ack-history nil)
(defvar ack-host-defaults-alist nil)
(defun ack ()
  "Like grep, but using ack-command as the default"
  (interactive)
  ; Make sure grep has been initialized
  (if (>= emacs-major-version 22)
      (require 'grep)
    (require 'compile))
  ; Close STDIN to keep ack from going into filter mode
  (let ((null-device (format "< %s" null-device))
        (grep-command ack-command)
        (grep-history ack-history)
        (grep-host-defaults-alist ack-host-defaults-alist))
    (call-interactively 'grep)
    (setq ack-history             grep-history
          ack-host-defaults-alist grep-host-defaults-alist)))
于 2010-02-24T05:43:12.087 回答
0

(setq grep-find-command "ack <nul -i ")

于 2012-07-09T14:57:14.997 回答
0

我在使用该模块时遇到了类似的问题ack-and-a-half,关闭 STDIN 也可以解决问题。github上有一个问题:https ://github.com/jhelwig/ack-and-a-half/issues/23

于 2013-03-27T00:19:31.693 回答