퍼 지 검색 신기 fzf
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 (출력 교환 창) 에서,
배치
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 로 끝 나 는 것 을 나타 낸다.
환경 변수
명령 줄 아래 단축 키
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 와 함께 매우 현란 한 기능 을 수행 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
✨〰️ ZI 〰️✨ Vim 구문❮ ZI ❯ 🧙♀️ Zsh를 위한 스위스 아미 나이프. 모든 것을 함께 붙일 수 있도록 설계되었습니다. zsh 유형의 파일에 있는 명령에 대한 Vim 구문 정의입니다. 📥 설치 Vim 플러그인으로 로드합니다. 예를...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.