Ubuntu 20 上的 Ripgrep 路徑說明符

Ubuntu 20 上的 Ripgrep 路徑說明符

我想用ripgrep在我的 Ubuntu 20 機器上。我已經從各種存儲庫安裝了它(apt, snap, 貨物)甚至自己建造了它,但總是遇到同樣的問題:

根據手冊,應該能夠運行

rg 'pattern'

ripgrep 只會在目前工作目錄中遞歸搜尋。然而對我來說,它似乎總是期望有一個路徑說明符,事實表明,即使具有該模式的檔案存在於當前目錄的頂層,它也不會找到匹配項。

只有當我執行以下操作時,Ripgrep 才會起作用:

rg 'pattern' *

這不會是太大的問題,但我打算在 vim 插件中使用 ripgrep,它期望手冊中的行為。所以問題是:為什麼 ripgrep 的行為如此奇怪以及如何修復該行為?

編輯:

使用此--debug標誌運行命令會產生以下輸出:

DEBUG|grep_regex::literal|grep-regex/src/literal.rs:59: literal prefixes detected: Literals { lits: [Complete(test)], limit_size: 250, limit_class: 10 }
DEBUG|globset|globset/src/lib.rs:435: built glob set; 0 literals, 0 basenames, 11 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
DEBUG|globset|globset/src/lib.rs:435: built glob set; 0 literals, 0 basenames, 11 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
DEBUG|globset|globset/src/lib.rs:435: built glob set; 0 literals, 0 basenames, 11 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
DEBUG|globset|globset/src/lib.rs:435: built glob set; 0 literals, 0 basenames, 11 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
DEBUG|globset|globset/src/lib.rs:430: glob converted to regex: Glob { glob: "**/*", re: "(?-u)^(?:/?|.*/)[^/]*$", opts: GlobOptions { case_insensitive: false, literal_separator: true, backslash_escape: true }, tokens: Tokens([RecursivePrefix, ZeroOrMore]) }
DEBUG|globset|globset/src/lib.rs:435: built glob set; 0 literals, 0 basenames, 0 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 1 regexes
DEBUG|globset|globset/src/lib.rs:435: built glob set; 0 literals, 0 basenames, 11 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
DEBUG|ignore::walk|ignore/src/walk.rs:1639: ignoring ./.cache: Ignore(IgnoreMatch(Gitignore(Glob { from: Some("./.gitignore"), original: "*", actual: "**/*", is_whitelist: false, is_only_dir: false })))

...

然後它與我的主目錄的每個子資料夾的最後一行相同。

答案1

好的,感謝@Brian,我已經解決了這個問題。

ripgrep有一個內建的忽略邏輯,自動忽略它在.gitignore.

為了透過 git 保存我的點文件,我在我的主目錄中設置了一個存儲庫,默認情況下它會忽略除我使用git add -f ....即在我的.gitignore主目錄中的文件中,我忽略所有 ( *) 文件,這又導致 ripgrep 也忽略它們。我不認為太多人會遇到同樣的問題,但也許有一天這對某人有幫助。

相關內容