
나는 사용하고 싶다립그렙내 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도 해당 파일을 무시하게 됩니다. 나는 너무 많은 사람들이 같은 문제를 겪을 것이라고 생각하지 않지만 아마도 이것이 언젠가 누군가에게 도움이 될 것입니다.