2017-08-05 78 views
1

我們如何定製Emacs的rgrep以使用ripgrep(rg可執行文件) - 使它能夠同時在拉丁文1,UTF-8和UTF-16中搜索?Emacs中的Rgrep使用ripgrep

的想法是重複使用的Emacs的標準rgrep命令,這樣我們就可以用未來的錯誤和以前的錯誤,以及...

我不知道如何充分整合(用於base dir)和(對於匹配的文件)說明符等等。

(grep-apply-setting 'grep-find-template 
        "rg -uu -g <F> <R> <D>") 

會產生(內* .txt文件進行搜索時)

rg -uu -g \(-iname \*.txt \) test . 
error: Invalid value for '--max-count <NUM>': invalid digit found in string 

Grep exited abnormally with code 1 at Sun Aug 6 00:23:58 
+0

'rg'不支持'find'謂詞。只是普通的通配符。您必須將其與'find'命令結合使用。 –

+0

@JürgenHötzel感謝您的信息。你可以展示如何編寫它(並將其發佈爲答案)? – user3341592

+0

melpa中有兩個與ripgrep一起使用的軟件包:'rg'和'ripgrep'。我現在正在嘗試'rg',因爲它說它支持'wgrep-ag'; 'wgrep'是我最喜歡的功能之一。 – jpkotta

回答

1

grep-find-template是用於組合使用grep命令find。這個工作對我來說:

(grep-apply-setting 'grep-find-template "find <D> <X> -type f <F> -exec rg <C> --no-heading -H <R> /dev/null {} +") 

如果你想使用rg沒有find你必須使用lgrep和定製:

(grep-apply-setting 'grep-template "rg --no-heading -H -uu -g <F> <R> <D>") 
+0

謝謝。爲什麼應該設置grep-command和grep-find-command,對於rg? – user3341592

+0

得到「搜索失敗,這意味着某處有無與倫比的表達式,或者我們處於文件的開頭/結尾處。」測試M-x rgrep時。我不明白字符串末尾的+號。是對的嗎? – user3341592

+0

「+」是「find」語法的一部分。它定義了'exec'動作的結束。 –