퍼 지 검색 신기 FZF 번 외편

3956 단어 findgrepshelllinux
퍼 지 검색 신기 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 는 매우 멋 있 습 니 다. 조합 적 인 명령 행 도구 입 니 다
  • 고 로 썼어 요. 아주 빨 라 요
  • 비동기 로 실행 하면 호출 도구 에 영향 을 주지 않 고 매우 많은 양의 데 이 터 를 처리 할 수 있 습 니 다
  • 파일 만 찾 는 것 이 아니 라 여러 가지 측면 에서 도움 을 줄 수 있 습 니 다
  • 이식 이 쉽 고 (신뢰 가 없 음) 유연 한 창 설정
  • vim 통합
  • FZF 포 지 셔 닝
    FZF 는 모호 한 검색 명령 행 도구 일 뿐 다른 도구 와 결합 하여 사용 해 야 합 니 다. 입력 은 다른 도구 에서 받 아야 합 니 다. 출력 은 보통 다른 도구 에 도 보 냅 니 다.
    FZF 와 함께 편리 하 게 사용 할 수 있 는 도구 가 있 나 요?
    현재 비교적 많은 것 은 다음 과 같은 몇 가지 도구 이다.
  • Find (디 렉 터 리 검색)
  • Grep (텍스트 검색)
  • Ag (텍스트 검색)
  • fd (디 렉 터 리 검색)
  • ripgrep (텍스트 검색)
  • 두 번 째 는 최근 에 나 온 두 검색 분야 의 신예 로 현재 속도 가 가장 빠 를 것 으로 보인다.
    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=neverrg --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 와 다른 도 구 를 잘 결합 할 수 있 습 니 다. 어떤 재 미 있 는 아이디어 가 있 으 면 본인 과 공유 하 시기 바 랍 니 다.

    좋은 웹페이지 즐겨찾기