퍼 지 검색 신기 fzf

7264 단어 shellvimlinux
머리말
fzf 는 현재 가장 빠 른 fuzy finder 입 니 다.골 랑 으로 작성 합 니 다.다른 도구 (예 를 들 어 ag 와 fasd) 를 결합 하면 매우 많은 일 을 완성 할 수 있다.모호 한 키 워드 를 입력 하면 파일 이나 폴 더 를 찾 을 수 있 습 니 다.당신 의 생각 도 모호 하 게 일치 하 는 것 에 익숙해 지면 업무 효율 을 크게 향상 시 킬 수 있 습 니 다.모호 검색 의 개념 은 다음 과 같 습 니 다. 파일 이름 에 con, te, go 가 포함 되 어 있 는 것 을 기억 하 십시오. 그러면 모든 파일 을 fzf 에 보 내 고 창 에 con te go 를 입력 하면 됩 니 다. 이름 이 test 이 든 상 관 없 이.continus_go 아니면 gocont_테스트 가 모두 일치 합 니 다.
설치 하 다.
git 사용
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install

업그레이드
cd ~/.fzf && git pull && ./install

원생 사용
fzf 는 기본적으로 stdIN 에서 데 이 터 를 읽 은 다음 결 과 를 stdOUT 로 출력 합 니 다.
find * -type f | fzf > selected

위의 명령 은 find 검색 결과 에서 읽 고 파일 selected 로 출력 합 니 다.
fzf 의 단축 키
finder (출력 교환 창) 에서,
  • Ctrl - J/Ctrl - K/Ctrl - N/Ctrlk - N 커서 를 위아래 로 이동 할 수 있 습 니 다
  • Enter 키 를 누 르 면 항목 을 선택 하고, Ctrl - C/Ctrl - G/Esc 를 누 르 면 종료 합 니 다
  • 다 중 선택 모드 에서 (- m), TAB 와 Shift - TAB 는 다 중 선택
  • 마우스: 상하 스크롤, 선택, 더 블 클릭, Shift - click 또는 shift - coll 은 다 중 선택 모드
  • 에 사 용 됩 니 다.
    배치
    fzf 기본 전체 화면 모드, 높이 맞 출 수 있 습 니 다.
    vim $(fzf --height 40%)

    $FZF DEFAULT OPTS 를 통 해 기본 값 을 설정 할 수 있 습 니 다.
    export FZF_DEFAULT_OPTS='--height 40% --reverse --border'

    검색 문법
    fzf 는 기본적으로 "extended - search"모드 로 시 작 됩 니 다. 이 모드 에서 빈 칸 으로 구 분 된 검색 키 워드 를 여러 개 입력 할 수 있 습 니 다. 예 를 들 어 ^music .mp3$, sbtrkt !fire.
    Token
    Match type
    Description
    sbtrkt
    fuzzy-match
    일치 하 는 sbtrkt
    ^music
    prefix-exact-match
    음악 으로 시작 하 다
    .mp3$
    suffix-exact-match
    mp3 로 마무리
    'wild
    exact-match(quoted)
    정확 한 포함 wild
    !fire
    inverse-exact-match
    fire 포함 하지 않 음
    !.mp3$
    inverse-suffix-exact-match
    mp3 로 끝나 지 않 음
    fuzy match 를 사용 하지 않 으 려 면 fzf -e 로 정확 한 매 칭 을 할 수 있 습 니 다 | or 매 칭 을 할 수 있 습 니 다. 예 를 들 어
    ^core go$|rb$|py$

    core 로 시작 하여 go 또는 rb 또는 py 로 끝 나 는 것 을 나타 낸다.
    환경 변수
  • FZF_DEFAULT_ COMMAND
  • 기본 입력 설정
  • 예 를 들 어 'export FZF DEFAULT COMMAND =' ag - g ''
  • FZF_DEFAULT_OPTS
  • 기본 설정
  • 예 를 들 어 'export FZF DEFAULT OPTS =' -- reverse -- inline - info '

  • 명령 줄 아래 단축 키
    CTRL-T
    명령 줄 아래 ctrl - t 를 누 르 면 fzf 창 이 열 립 니 다. 어떤 항목 을 선택 하고 Enter 를 누 르 면 선택 한 항목 이 명령 줄 에 복 사 됩 니 다. 파일 내용 을 동시에 미리 보 려 면 --preview 옵션 을 사용 하 십시오.
    export FZF_CTRL_T_OPTS="--preview '(highlight -O ansi -l {} 2> /dev/null || cat {} || tree -C {}) 2> /dev/null | head -200'"
    --select-1--exit-0 전 자 를 사용 할 수도 있 습 니 다. 한 항목 만 있 으 면 fzf 후 자 를 자동 으로 선택 하고 종료 합 니 다. 항목 이 비어 있 으 면 위의 두 옵션 을 자동 으로 종료 하 는 것 도 ALT - C 에 유용 합 니 다.
    CTRL-R
    명령 행 아래 ctrl - r 를 누 르 면 fzf 는 history 명령 을 표시 합 니 다. 항목 을 선택 하고 fzf 를 떠 나 면 선택 한 항목 은 명령 행 에 복사 되 며 zsh 아래 에 서 는 C - XC - R 을 누 르 고 직접 실행 할 수 있 습 니 다.
    fzf-history-widget-accept() {
      fzf-history-widget
      zle accept-line
    }
    zle    -N    fzf-history-widget-accept
    bindkey '^X^R' fzf-history-widget-accept

    ALT-C
    명령 줄 에 alt - c 를 누 르 면 현재 폴 더 아래 디 렉 터 리 가 표 시 됩 니 다. 선택 한 항목 은 자동 으로 해당 디 렉 터 리 로 들 어 갑 니 다.
    명령 행 의 모호 한 완성
    기본 값 은 * * 를 통 해 파일 이나 디 렉 터 리 의 자동 완성 을 실행 할 수 있 습 니 다.
    COMMAND [DIRECTORY/][FUZZY_PATTERN]**

    예 를 들 면
    vim **
    vim ../mult**
    cd ~/github/fzf**

    미리 보기 창
    -- preview 옵션 을 사용 하면 fzf 는 현재 항목 의 파일 을 외부 프로그램 으로 자동 으로 엽 니 다. {} fzf 에서 선택 한 줄 의 내용 으로 대 체 됩 니 다.
    fzf --preview 'cat {}'

    rougify 를 설치 하 는 것 을 권장 합 니 다.
    fzfp() {
    fzf --preview '[[ $(file --mime {}) =~ binary ]] && echo {} is a binary file || (rougify {}  || highlight -O ansi -l {} || coderay {} || cat {}) 2> /dev/null | head -500'
    alias tt='fzf --preview '"'"'[[ $(file --mime {}) =~ binary ]] && echo {} is a binary file || (rougify {}  || highlight -O ansi -l {} || coderay {} || cat {}) 2> /dev/null | head -500'"'"

    함 수 는 더 좋 은 방법 입 니 다. alias 를 사용 하면 '문 제 를 돌리 기 위해 서 는 작은 따옴표 에 작은 따옴표 하 나 를 더 해 야 작은 따옴표 하 나 를 만 들 수 있 습 니 다. 위의 그림 왼쪽 은 파일 목록 이 고 오른쪽 은 rougify 가 만 든 미리 보기 창 입 니 다. 마우스 로 위아래 로 굴 릴 수 있 습 니 다. 안 타 깝 게 도 키보드 로 커서 를 오른쪽 창 으로 이동 하여 위아래 로 굴 릴 수 없습니다.
    fzf 예시
    interactive cd
    설치 하 다.
    wget https://github.com/changyuheng/zsh-interactive-cd/blob/master/zsh-interactive-cd.plugin.zsh
    cp zsh-interactive-cd.plugin.zsh ~/.fzf/shell
    echo 'source ~/.fzf/shell/zsh-interactive-cd.plugin.zsh' >> ~/.zshrc

    cd 후 ctrl - i 를 누 르 면 fzf finder 창 이 열 립 니 다.
    z
    # fasd & fzf change directory - jump using `fasd` if given argument, filter output of `fasd` using `fzf` else
    z() {
        [ $# -gt 0 ] && fasd_cd -d "$*" && return
        local dir
        dir="$(fasd -Rdl "$1" | fzf -1 -0 --no-sort +m)" && cd "${dir}" || return 1
    }

    changing directory
    # fd - cd to selected directory
    fd() {
      local dir
      dir=$(find ${1:-.} -path '*/\.*' -prune \
                      -o -type d -print 2> /dev/null | fzf +m) &&
      cd "$dir"
    }
    # fda - including hidden directories
    fda() {
      local dir
      dir=$(find ${1:-.} -type d 2> /dev/null | fzf +m) && cd "$dir"
    }
    # fdr - cd to selected parent directory
    fdr() {
      local declare dirs=()
      get_parent_dirs() {
        if [[ -d "${1}" ]]; then dirs+=("$1"); else return; fi
        if [[ "${1}" == '/' ]]; then
          for _dir in "${dirs[@]}"; do echo $_dir; done
        else
          get_parent_dirs $(dirname "$1")
        fi
      }
      local DIR=$(get_parent_dirs $(realpath "${1:-$PWD}") | fzf-tmux --tac)
      cd "$DIR"
    }
    # cf - fuzzy cd from anywhere
    # ex: cf word1 word2 ... (even part of a file name)
    # zsh autoload function
    cf() {
      local file
    
      file="$(locate -Ai -0 $@ | grep -z -vE '~$' | fzf --read0 -0 -1)"
    
      if [[ -n $file ]]
      then
        if [[ -d $file ]]
        then
            cd -- $file
        else
            cd -- ${file:h}
        fi
      fi
    }

    v
    # fasd & fzf change directory - open best matched file using `fasd` if given argument, filter output of `fasd` using `fzf` else
    v() {
        [ $# -gt 0 ] && fasd -f -e ${EDITOR} "$*" && return
        local file
        file="$(fasd -Rfl "$1" | fzf -1 -0 --no-sort +m)" && vi "${file}" || return 1
    }

    fzf 의 vim 플러그 인
    vimrc 에 vunble 로 설치 하기
    set rtp+=/home/harriszh/.fzf/
    ...
    Plugin 'junegunn/fzf.vim'
    ...

    그리고 FZF 등 명령 은 ag 를 설치 하 는 것 을 권장 하고 FZF DEFAULT COMMAND 를 ag 로 바 꿀 수 있 습 니 다.
    더 많은 정보
    FZF 와 vim 의 결합 에 관심 이 있다 면: VIM 과 퍼 지 검색 신기 FZF 의 통합 용법 - 간단 부터 고급 까지 FZF 와 각종 도구 의 결합 사용 에 관심 이 있다 면: 퍼 지 검색 신기 FZF 번 외 편
    뒷말
    fzf 는 매우 강력 한 풀 도구 로 ag, fasd 및 셸 command 와 함께 매우 현란 한 기능 을 수행 할 수 있 습 니 다.

    좋은 웹페이지 즐겨찾기