在emacs中更改默认的find-grep命令

当我在emacs中执行find-grep命令时,我find . -type f -exec grep -nH -e {} + find . -type f -exec grep -nH -e {} + ,因为我使用find . -type f -exec grep -nH -e {} +作为默认shell,为了使这个命令工作,我必须执行find . -type f -exec grep -nH -e \{\} + find . -type f -exec grep -nH -e \{\} +

我试图修改emacs源代码,下面是我的更改:

/usr/share/emacs/24.4/lisp/ldefs-boot.el 12669行: If `exec-plus' use `find -exec \{\} +'.

/usr/share/emacs/24.4/lisp/loaddefs.el 12669行: If `exec-plus' use `find -exec \{\} +'.

但是,当我执行find-grep仍然显示find . -type f -exec grep -nH -e {} +时,这没有任何意义find . -type f -exec grep -nH -e {} + find . -type f -exec grep -nH -e {} + 。 任何人都可以告诉我我在做什么错,或者我应该如何解决这个问题?

Solutions Collecting From Web of "在emacs中更改默认的find-grep命令"

您更改的文本看起来不像可执行代码。 也许你只是改变了一个文档字符串(实际上,有一点谷歌搜索显示这是在grep-find-use-xargs的文档字符串中)。 但Emacs是非常可定制的; 所有你需要做的就是把grep-find-template的值设置成更适合你个人的东西,在你自己的.emacs/init.el或者类似的地方。

 (setq grep-find-template "find . <X> -type f <F> -exec grep <C> -nH -e <R> \\{\\} +") 

进一步的文档,当然还有内置的文档( ctrl-h v grep-find-template RET )。

实际的源代码在http://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/progmodes/grep.el#n174

您需要使用函数grep-apply-setting来设置变量grep-find-command ,并且在大括号之前的反斜杠上加倍:

 (grep-apply-setting 'grep-find-command "find . -type f -exec grep -nH -e \\{\\} +") 
 (grep-apply-setting 'grep-find-command '("find . -type f -exec grep -nH -e \\{\\} +" . 34)) 

将光标放在-e