현재 디렉토리 부하를 fzf + grep (rg)로 증분으로 전문 검색 한 후 vim에서 열기
3880 단어 ShellScriptVimripgrepgrepfzf
grep과 fzf의 조합이라고 재귀적으로 grep한 뒤에 파일명으로 필터링하는 방법은 많이 있었지만, 그렇지 않고 현재 디렉토리 부하의 모든 파일을 fzf를 사용해 증분에 전문 검색하고 싶다.
Laravel을 vendor 포함하여 검색하면 이런 느낌.
코드
#!/bin/bash
grep_cmd="grep --recursive --line-number --invert-match --regexp '^\s*$' * 2>/dev/null"
if type "rg" >/dev/null 2>&1; then
grep_cmd="rg --hidden --no-ignore --line-number --no-heading --invert-match '^\s*$' 2>/dev/null"
fi
read -r file line <<<"$(eval $grep_cmd | fzf --select-1 --exit-0 | awk -F: '{print $1, $2}')"
( [[ -z "$file" ]] || [[ -z "$line" ]] ) && exit
$EDITOR $file +$line
덤
일단 grep에서도 움직인다고 생각하지만, rg 쪽이 30% 정도 빠르다.
# grepで全文走査
masakuni@mi-air % grep_cmd="grep --recursive --line-number --invert-match --regexp '^\s*$' * 2>/dev/null"
masakuni@mi-air % time (eval $grep_cmd | wc)
769816 4200126 84045096
( eval $grep_cmd | wc; ) 1.91s user 0.42s system 124% cpu 1.874 total
# rgで全文走査
masakuni@mi-air % grep_cmd="rg --hidden --no-ignore --line-number --no-heading --invert-match '^\s*$' 2>/dev/null"
masakuni@mi-air % time (eval $grep_cmd | wc)
769987 4201356 84059315
( eval $grep_cmd | wc; ) 1.33s user 0.79s system 339% cpu 0.624 total
Reference
이 문제에 관하여(현재 디렉토리 부하를 fzf + grep (rg)로 증분으로 전문 검색 한 후 vim에서 열기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/masakuni-ito/items/deb000b5ca5eb6588463텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)