Ubuntu 20의 Ripgrep 경로 지정자

Ubuntu 20의 Ripgrep 경로 지정자

나는 사용하고 싶다립그렙내 Ubuntu 20 컴퓨터에서. 다양한 저장소에서 설치했습니다(적절한, 스냅, 화물) 심지어 직접 구축했지만 항상 같은 문제에 직면했습니다.

매뉴얼에 따르면 그냥 실행할 수 있어야합니다

rg 'pattern'

ripgrep은 현재 작업 디렉토리에서 재귀적으로 검색합니다. 그러나 나에게는 항상 경로 지정자를 기대하는 것 같습니다. 이는 패턴이 있는 파일이 현재 디렉터리의 최상위 수준에 있더라도 일치하는 항목을 찾지 못한다는 사실에서 알 수 있습니다.

Ripgrep은 다음과 같은 작업을 수행하는 경우에만 작동합니다.

rg 'pattern' *

이것은 큰 문제는 아니지만 매뉴얼의 동작을 예상하는 vim-addon에서 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도 해당 파일을 무시하게 됩니다. 나는 너무 많은 사람들이 같은 문제를 겪을 것이라고 생각하지 않지만 아마도 이것이 언젠가 누군가에게 도움이 될 것입니다.

관련 정보