我正在尝试使用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
在cmd.exe
中执行相同的命令“ack html”工作正常(显示包含字符串“html”的各种文件。
有什么想法吗?
答案 0 :(得分:8)
在Windows下的Emacs下运行ack时,我发现它有时会混淆是应该搜索文件还是从STDIN读取。这是我用来调用ack的函数(使用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)))
答案 1 :(得分:0)
(setq grep-find-command "ack <nul -i ")
答案 2 :(得分:0)
我在使用ack-and-a-half
模块时遇到了类似的问题,关闭STDIN也在那里做了伎俩。 github上有一个问题:https://github.com/jhelwig/ack-and-a-half/issues/23