퍼 지 검색 신기 FZF 번 외편
Fuzzy finder
모호 검색 이란 무엇 입 니까?넓 은 의미 의 모호 한 검색 은 검색 정보 와 검색 질문 사이 에 어느 정도 차이 가 있 는 것 을 허용 하 는 것 을 말 하 는데 이런 차 이 는 바로 '모호' 가 검색 에서 의 의미 이다.예 를 들 어 이름 Smith 를 찾 으 면 비슷 한 Smithe, Smyth, Smyth, Smitt 등 을 찾 아 낼 수 있다.하지만 우 리 는 검색 키 워드 를 모호 하 게 검색 하 는 것 을 말한다.아래 의 검색 을 보면 제 키 워드 는 'a t dir go 156' 입 니 다. 검색 한 결 과 는 'app/go/test/fixedbugs/issue15609. dir/call amd 64. s' 입 니 다. 결 과 는 키워드 순서에 따라 질서 있 게 배열 되 어 있 지 않 습 니 다.
왜 Fuzzy finder 를 써 요?
가장 유명한 fizzy finder 는 당연히 FZF 입 니 다. 이 한국 의 큰 신 주 니 건 최 가 쓴 몇 가지 작은 도 구 는 모두 신 이 나 서 소 가 생산 하 는 품질 이 보장 된다 는 것 을 증명 합 니 다.
왜 FZF 를 선 택 했 어 요?
FZF 는 모호 한 검색 명령 행 도구 일 뿐 다른 도구 와 결합 하여 사용 해 야 합 니 다. 입력 은 다른 도구 에서 받 아야 합 니 다. 출력 은 보통 다른 도구 에 도 보 냅 니 다.
FZF 와 함께 편리 하 게 사용 할 수 있 는 도구 가 있 나 요?
현재 비교적 많은 것 은 다음 과 같은 몇 가지 도구 이다.
ripgrep 와 함께 사용 하 는 방법
rg 를 사용 하여 파일 목록 을 설정 할 수 있 습 니 다.
export FZF_DEFAULT_COMMAND='rg --files --no-ignore --hidden --follow --glob "!{.git,node_modules}/*" 2> /dev/null'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
export FZF_ALT_C_COMMAND="rg --sort-files --files --null 2> /dev/null | xargs -0 dirname | uniq"
vimrc 에 써 도 돼 요.
let g:rg_command = '
\ rg --column --line-number --no-heading --fixed-strings --ignore-case --no-ignore --hidden --follow --color "always"
\ -g "*.{js,json,php,md,styl,jade,html,config,py,cpp,c,go,hs,rb,conf}"
\ -g "!{.git,node_modules,vendor}/*" '
command! -bang -nargs=* F call fzf#vim#grep(g:rg_command .shellescape(), 1, 0)
이렇게 하면 vim 에 F 를 입력 하면 관련 rv 를 진행 할 수 있 습 니 다.
fd 와 함께 사용 하 는 방법
fd 로 파일 목록 을 얻 을 수도 있 습 니 다. fd 와 rg 의 walkthrough 코드 는 공유 되 기 때문에 속도 가 기본적으로 같 습 니 다.
export FZF_DEFAULT_COMMAND='fd --type f --color=never'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
export FZF_ALT_C_COMMAND="fd --type d --color=never"
rg 와 fd 의 속 도 를 time 로 비교 할 때 rg 가 fd 보다 빠르다 는 결론 을 얻 을 수 있 습 니 다. 사실은 fd 가 컬러 출력 결 과 를 얻 기 때 문 입 니 다.
fd --type f --color=never
와 rg --files
로 비교 하면 결 과 는 거의 같 습 니 다.여러 셸 과 호흡 을 맞추다
예 를 들 어 선택 한 파일 이 있 는 폴 더 에 들 어 갑 니 다.
# cdf - cd into the directory of the selected file
cdf() {
local file
local dir
file=$(fzf +m -q "$1") && dir=$(dirname "$file") && cd "$dir"
}
과거 기록 명령 실행
fh() {
eval $( ([ -n "$ZSH_NAME" ] && fc -l 1 || history) | fzf +s --tac | sed 's/ *[0-9]* *//')
}
예 를 들 어 checkout git 분기
# fbr - checkout git branch (including remote branches), sorted by most recent commit, limit 30 last branches
fbr() {
local branches branch
branches=$(git for-each-ref --count=30 --sort=-committerdate refs/heads/ --format="%(refname:short)") &&
branch=$(echo "$branches" |
fzf-tmux -d $(( 2 + $(wc -l <<< "$branches") )) +m) &&
git checkout $(echo "$branch" | sed "s/.* //" | sed "s#remotes/[^/]*/##")
}
총결산
FZF 는 사실 풀 도구 입 니 다. 다른 도구 의 출력 을 입력 으로 읽 거나 다른 도 구 를 사용 하여 출력 을 읽 거나 자신의 출력 을 다른 도구 에 입력 으로 보 내야 합 니 다. 이 점 을 이해 하면 fzf 와 다른 도 구 를 잘 결합 할 수 있 습 니 다. 어떤 재 미 있 는 아이디어 가 있 으 면 본인 과 공유 하 시기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
백준(baekjoon)-C++ 정리1181 단어 정렬 벡터(vector) v.begin():벡터 시작점의 주소 값 반환 v.end(): 벡터 (끝부분+1) 주소 값 반환 v.push_back():벡터의 마지막 부분에 새로운 요소를 추가함 find(f...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.