특별히 감사드립니다:
Warp는 AI가 내장된 최신 Rust 기반 터미널이므로 귀하와 귀하의 팀은 훌륭한 소프트웨어를 더 빠르게 구축할 수 있습니다.
자세히 알아보려면 warp.dev를 방문하세요.
fzf는 범용 명령줄 퍼지 파인더입니다.
모든 종류의 목록에 대한 대화형 필터 프로그램입니다. 파일, 명령 기록, 프로세스, 호스트 이름, 북마크, git 커밋 등. "퍼지" 일치 알고리즘을 구현하므로 생략된 문자가 포함된 패턴을 빠르게 입력하고 원하는 결과를 얻을 수 있습니다.
이식성 — 쉬운 설치를 위해 단일 바이너리로 배포됩니다.
엄청나게 빠른 속도 — 고도로 최적화된 코드로 수백만 개의 항목을 즉시 처리합니다.
매우 다양한 기능 — 이벤트-액션 바인딩 메커니즘을 통해 완전히 사용자 정의 가능
배터리 포함 — bash, zsh, fish, Vim 및 Neovim과의 통합 포함
fzf를 지속적으로 개선할 수 있도록 해준 이 프로젝트의 모든 후원자에게 감사의 말씀을 전하고 싶습니다.
이 프로젝트를 후원하고 싶다면 https://github.com/sponsors/junegunn을 방문하세요.
설치
홈브류 사용
리눅스 패키지
윈도우 패키지
자식 사용
바이너리 릴리스
셸 통합 설정
Vim/Neovim 플러그인
fzf 업그레이드 중
건물 fzf
용법
--height
모드
--tmux
모드
파인더 사용하기
디스플레이 모드
검색 구문
환경변수
옵션
데모
예
명령줄의 키 바인딩
Bash 및 zsh에 대한 퍼지 완성
파일 및 디렉터리
프로세스 ID
호스트 이름
환경 변수/별칭
설정
지원되는 명령
사용자 정의 퍼지 완성
Vim 플러그인
고급 주제
1. CTRL-R을 눌러 프로세스 목록을 업데이트합니다.
2. CTRL-D 또는 CTRL-F를 눌러 소스 간 전환
3. 대화형 ripgrep 통합
성능
외부 프로그램 실행
다른 프로세스로 전환
후보자 목록을 다시 로드하는 중
미리보기 창
이미지 미리보기
팁
.gitignore
존중
생선 껍질
fzf 테마 놀이터
관련 프로젝트
특허
Homebrew(macOS 또는 Linux)를 사용하여 fzf를 설치할 수 있습니다.
양조 설치 fzf
중요한
셸 통합(키 바인딩 및 퍼지 완성)을 설정하려면 아래 지침을 참조하세요.
fzf는 MacPorts를 통해서도 사용할 수 있습니다: sudo port install fzf
패키지 관리자 | 리눅스 배포판 | 명령 |
---|---|---|
APK | 알파인 리눅스 | sudo apk add fzf |
적절한 | 데비안 9+/우분투 19.10+ | sudo apt install fzf |
콘다 | conda install -c conda-forge fzf | |
DNF | 페도라 | sudo dnf install fzf |
아니야 | NixOS 등 | nix-env -iA nixpkgs.fzf |
팩맨 | 아치 리눅스 | sudo pacman -S fzf |
패키지 | FreeBSD | pkg install fzf |
패키지 | NetBSD | pkgin install fzf |
pkg_add | 오픈BSD | pkg_add fzf |
운반 | 젠투 | emerge --ask app-shells/fzf |
스팩 | spack install fzf | |
XBPS | 공허한 리눅스 | sudo xbps-install -S fzf |
지퍼 | 오픈수세 | sudo zypper install fzf |
중요한
셸 통합(키 바인딩 및 퍼지 완성)을 설정하려면 아래 지침을 참조하세요.
Windows에서는 Chocolatey, Scoop, Winget 및 MSYS2를 통해 fzf를 사용할 수 있습니다.
패키지 관리자 | 명령 |
---|---|
초콜릿 같은 | choco install fzf |
국자 | scoop install fzf |
윙겟 | winget install fzf |
MSYS2(팩맨) | pacman -S $MINGW_PACKAGE_PREFIX-fzf |
또는 이 저장소를 임의의 디렉터리에 "git clone"하고 설치 스크립트를 실행할 수 있습니다.
git clone --깊이 1 https://github.com/junegunn/fzf.git ~/.fzf~/.fzf/install
설치 스크립트는 쉘 구성 파일에 행을 추가하여 $PATH
수정하고 쉘 통합을 설정합니다.
릴리스 페이지에서 공식 fzf 바이너리를 다운로드할 수 있습니다.
https://github.com/junegunn/fzf/releases
셸 구성 파일에 다음 줄을 추가합니다.
세게 때리다
# fzf 키 바인딩 및 퍼지 완성 평가 "$(fzf --bash)"를 설정합니다.
zsh
# fzf 키 바인딩 및 퍼지 완성 소스 설정 <(fzf --zsh)
물고기
# fzf 키 바인딩 설정fzf --fish | 원천
메모
--bash
, --zsh
및 --fish
옵션은 fzf 0.48.0 이상에서만 사용할 수 있습니다. fzf의 이전 버전이 있거나 보다 세부적인 제어를 원하는 경우 /shell 디렉토리에서 개별 스크립트 파일을 소싱할 수 있습니다. 파일 위치는 사용하는 패키지 관리자에 따라 다를 수 있습니다. 자세한 내용은 패키지 설명서를 참조하세요. (예: apt show fzf
)
팁
스크립트를 소싱할 때 FZF_CTRL_T_COMMAND
또는 FZF_ALT_C_COMMAND
빈 문자열로 설정하여 CTRL-T 또는 ALT-C 바인딩을 비활성화할 수 있습니다. 예를 들어 ALT-C 바인딩을 비활성화하려면 다음을 수행합니다.
bash: FZF_ALT_C_COMMAND= eval "$(fzf --bash)"
zsh: FZF_ALT_C_COMMAND= source <(fzf --zsh)
물고기: fzf --fish | FZF_ALT_C_COMMAND= source
스크립트를 소싱한 후 변수를 설정하면 아무런 효과가 없습니다.
vim-plug를 사용하는 경우 Vim 구성 파일에 다음을 추가하세요.
플러그 'junegunn/fzf', { 'do': { -> fzf#install() } } 'junegunn/fzf.vim'을 연결하세요.
junegunn/fzf
기본 라이브러리 기능을 제공합니다.
fzf#install()
최신 바이너리가 있는지 확인합니다.
junegunn/fzf.vim
은 다양하고 유용한 명령을 제공하는 별도의 프로젝트입니다.
Vim 통합에 대해 자세히 알아보려면 README-VIM.md를 참조하세요.
팁
Neovim을 사용하고 Lua 기반 플러그인을 선호한다면 fzf-lua를 확인하세요.
fzf는 활발하게 개발되고 있으므로 가끔씩 업그레이드하고 싶을 수도 있습니다. 사용된 설치 방법에 따라 아래 지침을 따르십시오.
자식: cd ~/.fzf && git pull && ./install
양조: brew update; brew upgrade fzf
macports: sudo port upgrade fzf
Chocolatey: choco upgrade fzf
vim-플러그: :PlugUpdate fzf
BUILD.md를 참조하세요.
fzf는 대화형 파인더를 실행하고, STDIN에서 목록을 읽고, 선택한 항목을 STDOUT에 씁니다.
* -type f 찾기 | fzf > 선택됨
STDIN 파이프가 없으면 fzf는 현재 디렉터리 아래의 파일 시스템을 탐색하여 파일 목록을 가져옵니다.
vim $(fzf)
메모
기본 동작을 재정의할 수 있습니다.
$FZF_DEFAULT_COMMAND
원하는 목록을 생성하는 명령으로 설정하여
또는 $FZF_DEFAULT_OPTS
에서 --walker
, --walker-root
및 --walker-skip
옵션을 설정하여
경고
보다 강력한 솔루션은 xargs
사용하는 것이지만 이해하기 더 쉽기 때문에 위의 내용을 제시했습니다.
fzf --print0 | xargs -0 -o vim
팁
fzf는 또한 스스로를 다른 프로세스로 전환할 수 있는 능력도 가지고 있습니다.
fzf --bind 'enter:become(vim {})'
자세한 내용은 다른 프로세스로 전환을 참조하세요.
커서를 위아래로 이동하려면 CTRL-K
/ CTRL-J
(또는 CTRL-P
/ CTRL-N
)
항목을 선택하려면 Enter
키를, 종료하려면 CTRL-C
/ CTRL-G
/ ESC
다중 선택 모드( -m
)에서 TAB
및 Shift-TAB
여러 항목 표시
Emacs 스타일 키 바인딩
마우스: 스크롤, 클릭, 더블클릭; 다중 선택 모드에서 Shift-클릭 및 Shift-스크롤
fzf는 기본적으로 전체 화면 모드로 실행되지만 다른 디스플레이 모드도 있습니다.
--height
모드 --height HEIGHT[%]
를 사용하면 fzf는 지정된 높이의 커서 아래에서 시작합니다.
fzf -- 높이 40%
reverse
레이아웃 및 --border
가 이 옵션과 잘 어울립니다.
fzf --높이 40% --레이아웃 역방향 --테두리
높이 앞에 ~
추가하면 최대 높이가 설정됩니다.
# 목록을 표시하는 데 가능한 한 적은 줄만 사용합니다.seq 3 | fzf --높이 ~100% 시퀀스 3000 | fzf --높이 ~100%
높이 값은 음수일 수 있습니다.
# 화면 높이 - 3fzf --height -3
--tmux
모드 --tmux
옵션을 사용하면 fzf가 tmux 팝업에서 시작됩니다.
# --tmux [center|top|bottom|left|right][,SIZE[%]][,SIZE[%]]fzf --tmux center # 가운데, 50% 너비 및 높이fzf --tmux 80% # 가운데, 80% 너비 및 높이fzf --tmux 100%,50% # 가운데, 100% 너비 및 50% 높이fzf --tmux left,40% # 왼쪽, 40% 너비fzf --tmux left,40%,90% # 왼쪽, 40% 너비, 90% 높이fzf --tmux top,40% # 위쪽, 40% heightfzf --tmux 아래쪽,80%,40% # 아래쪽 , 높이 80%, 높이 40%
--tmux
사용하지 않는 경우 tmux는 자동으로 무시됩니다.
메모
팝업을 지원하지 않는 이전 버전의 tmux를 사용하고 있거나 일반 tmux 창에서 fzf를 열려면 fzf-tmux 스크립트를 확인하세요.
팁
이러한 옵션을 $FZF_DEFAULT_OPTS
에 추가하여 기본적으로 적용되도록 할 수 있습니다. 예를 들어,
# tmux에 있는 경우 tmux 팝업에서 열고, 그렇지 않으면 --height modeexport FZF_DEFAULT_OPTS='--height 40% --tmux Bottom,40% --layout reverse --border top'을 사용합니다.
별도로 지정하지 않는 한, fzf는 공백으로 구분된 여러 검색어를 입력할 수 있는 "확장 검색 모드"에서 시작됩니다. 예: ^music .mp3$ sbtrkt !fire
토큰 | 일치 유형 | 설명 |
---|---|---|
sbtrkt | 퍼지 일치 | sbtrkt 와 일치하는 항목 |
'wild | 정확히 일치(인용) | wild 포함된 품목 |
'wild' | 정확한 경계 일치(양 끝 모두 인용) | 단어 경계에 wild 포함된 항목 |
^music | 접두어 정확히 일치 | music 으로 시작하는 아이템 |
.mp3$ | 접미사 정확히 일치 | .mp3 로 끝나는 항목 |
!fire | 역정합 일치 | fire 포함하지 않는 품목 |
!^music | 역접두사-완전 일치 | music 으로 시작하지 않는 항목 |
!.mp3$ | 역접미사 정확히 일치 | .mp3 로 끝나지 않는 항목 |
퍼지 일치를 선호하지 않고 모든 단어를 "인용"하고 싶지 않다면 fzf를 -e
또는 --exact
옵션으로 시작하세요. --exact
설정된 경우 '
-prefix는 용어를 "인용 해제"합니다.
단일 막대 문자 용어는 OR 연산자 역할을 합니다. 예를 들어 다음 쿼리는 core
로 시작하고 go
, rb
또는 py
로 끝나는 항목과 일치합니다.
^core go$ | rb$ | py$
FZF_DEFAULT_COMMAND
입력이 tty일 때 사용하는 기본 명령
예: export FZF_DEFAULT_COMMAND='fd --type f'
FZF_DEFAULT_OPTS
기본 옵션
예: export FZF_DEFAULT_OPTS="--layout=reverse --inline-info"
FZF_DEFAULT_OPTS_FILE
파일의 기본 옵션을 관리하려면 이 변수가 파일 위치를 가리키도록 설정하세요.
예: export FZF_DEFAULT_OPTS_FILE=~/.fzfrc
경고
FZF_DEFAULT_COMMAND
요구 사항의 약간의 차이로 인해 셸 통합에서 사용되지 않습니다.
CTRL-T
$FZF_CTRL_T_COMMAND
실행하여 파일 및 디렉터리 목록을 가져옵니다.
ALT-C
$FZF_ALT_C_COMMAND
실행하여 디렉터리 목록을 가져옵니다.
vim ~/**
접두사( ~/
)를 첫 번째 인수로 사용하여 fzf_compgen_path()
실행합니다.
cd foo**
접두사( foo
)를 첫 번째 인수로 사용하여 fzf_compgen_dir()
실행합니다.
사용 가능한 옵션은 이 문서의 뒷부분에 설명되어 있습니다.
전체 옵션 목록은 매뉴얼 페이지( man fzf
)를 참조하십시오.
비디오를 보고 배우신다면 @samoshkin의 스크린캐스트를 확인하여 fzf
기능을 살펴보세요.
예제 위키 페이지
면책 조항: 이 페이지의 예제는 커뮤니티에서 유지 관리하며 철저히 테스트되지 않았습니다.
고급 fzf 예제
셸 통합을 설정하면 bash, zsh 및 fish에서 다음 키 바인딩을 사용할 수 있습니다.
CTRL-T
- 선택한 파일과 디렉터리를 명령줄에 붙여넣습니다.
FZF_CTRL_T_COMMAND
원하는 목록을 생성하는 사용자 정의 명령으로 설정하여 동작을 재정의할 수 있습니다.
또는 FZF_CTRL_T_OPTS
에서 --walker*
옵션을 설정할 수 있습니다.
목록은 --walker file,dir,follow,hidden
옵션을 사용하여 생성됩니다.
fzf에 추가 옵션을 전달하려면 FZF_CTRL_T_OPTS
설정하세요.
# bat를 사용하여 파일 내용 미리보기 (https://github.com/sharkdp/bat)export FZF_CTRL_T_OPTS=" --walker-skip .git,node_modules,target --preview 'bat -n --color=always {}' - -bind 'ctrl-/:change-preview-window(아래|숨김|)'"
스크립트를 소싱할 때 FZF_CTRL_T_COMMAND
빈 문자열로 설정하여 비활성화할 수 있습니다.
CTRL-R
- 기록에서 선택한 명령을 명령줄에 붙여넣습니다.
명령을 시간순으로 보려면 CTRL-R
다시 눌러 관련순 정렬을 전환하세요.
줄바꿈을 전환하려면 CTRL-/
또는 ALT-/
누르세요.
fzf에 추가 옵션을 전달하려면 FZF_CTRL_R_OPTS
설정하세요.
# pbcopyexport를 사용하여 명령을 클립보드에 복사하려면 CTRL-Y FZF_CTRL_R_OPTS=" --bind 'ctrl-y:execute-silent(echo -n {2..} | pbcopy)+abort' --color header:italic --header '명령을 클립보드에 복사하려면 CTRL-Y를 누르세요'"
ALT-C
- 선택한 디렉토리로 cd
또는 FZF_ALT_C_OPTS
에서 --walker-*
옵션을 설정할 수 있습니다.
목록은 --walker dir,follow,hidden
옵션을 사용하여 생성됩니다.
기본 명령을 재정의하려면 FZF_ALT_C_COMMAND
설정하세요.
fzf에 추가 옵션을 전달하려면 FZF_ALT_C_OPTS
설정하세요.
# 미리보기 창에 트리 구조 인쇄export FZF_ALT_C_OPTS=" --walker-skip .git,node_modules,target --preview 'tree -C {}'"
스크립트를 소싱할 때 FZF_ALT_C_COMMAND
빈 문자열로 설정하여 비활성화할 수 있습니다.
이러한 바인딩의 표시 모드는 FZF_{CTRL_T,CTRL_R,ALT_C}_OPTS
통해 별도로 구성하거나 FZF_DEFAULT_OPTS
를 통해 전체적으로 구성할 수 있습니다. (예: FZF_CTRL_R_OPTS='--tmux bottom,60% --height 60% --border top'
)
더 많은 팁은 위키 페이지에서 확인할 수 있습니다.
커서 앞의 단어가 기본적으로 **
인 트리거 시퀀스로 끝나는 경우 파일 및 디렉터리에 대한 퍼지 완성이 트리거될 수 있습니다.
COMMAND [DIRECTORY/][FUZZY_PATTERN]**
# 현재 디렉터리 아래의 파일# - TAB keyvim을 사용하여 여러 항목을 선택할 수 있습니다. **# 상위 디렉터리 아래의 파일vim ../** # `fzf`vim과 일치하는 상위 디렉터리 아래의 파일 ../fzf* * # 홈 디렉터리 아래의 파일vim ~/** # 현재 디렉터리 아래의 디렉터리(단일 선택)cd ** # 일치하는 ~/github 아래의 디렉터리 `fzf`cd ~/github/fzf**<탭>
kill 명령에 대해 PID에 대한 퍼지 완성이 제공됩니다.
#또는 키를 사용하여 여러 프로세스를 선택할 수 있습니다. -9 **
ssh 및 telnet 명령의 경우 호스트 이름에 대한 퍼지 완성 기능이 제공됩니다. 이름은 /etc/hosts 및 ~/.ssh/config에서 추출됩니다.
ssh **텔넷 **
설정 해제 **내보내기 ** 별칭 **
# 기본 대신 트리거 시퀀스로 ~~를 사용합니다. **export FZF_COMPLETION_TRIGGER='~~'# fzf 명령에 대한 옵션export FZF_COMPLETION_OPTS='--border --info=inline'# fd를 사용합니다(https://github.com/ 경로 후보 목록을 위한 sharkdp/fd)입니다.# - 함수의 첫 번째 인수($1)는 탐색을 시작하기 위한 기본 경로입니다.# - 소스 코드를 참조하세요. (completion.{bash,zsh}) 자세한 내용은._fzf_compgen_path() { fd --hidden --follow --exclude ".git" . "$1"}# fd를 사용하여 디렉터리 완성 목록을 생성합니다._fzf_compgen_dir() { fd --type d --hidden --follow --exclude ".git" . "$1"}# _fzf_comprun 함수를 통한 fzf 옵션의 고급 사용자 정의# - 함수의 첫 번째 인수는 명령의 이름입니다.# - 나머지 인수는 fzf._fzf_comprun() { 로컬 명령에 전달해야 합니다. =$1 옮기다 케이스 "$command" 포함) fzf --preview 'tree -C {} | 헤드 -200' "$@" ;; 내보내기|설정 해제) fzf --preview "eval 'echo $'{}" "$@" ;; ssh) fzf --preview 'dig {}' "$@" ;;*) fzf --preview 'bat -n --color=always {}' "$@" ;; 에삭}
Bash에서는 사전 정의된 명령 세트(목록을 보려면 complete | grep _fzf
)에 대해서만 퍼지 완성이 활성화됩니다. 하지만 _fzf_setup_completion
도우미 함수를 사용하여 다른 명령에도 활성화할 수 있습니다.
# 사용법: _fzf_setup_completion path|dir|var|alias|host COMMANDS..._fzf_setup_completion path ag git kubectl _fzf_setup_completion 디렉토리 트리
(사용자 정의 완성 API는 실험적이며 변경될 수 있습니다)
"COMMAND" 라는 명령의 경우 _fzf_complete
도우미를 사용하여 _fzf_complete_COMMAND
함수를 정의합니다.
# "doge" 명령에 대한 사용자 정의 퍼지 완성# 예: doge **_fzf_complete_doge() { _fzf_complete --multi --reverse --prompt="doge> " -- "$@" < <( echo 매우 에코 와우 에코 이런 에코 총독 )}
--
앞의 인수는 fzf에 대한 옵션입니다.
--
뒤에는 원래 완성 인수를 변경하지 않고( "$@"
) 전달하면 됩니다.
그런 다음 완료 후보를 생성하고 프로세스 대체( < <(...)
)를 사용하여 해당 출력을 함수에 제공하는 명령 세트를 작성합니다.
zsh는 명명 규칙을 사용하여 자동으로 함수를 선택하지만 bash에서는 complete
명령을 사용하여 함수를 명령과 수동으로 연결해야 합니다.
[ -n "$BASH" ] && 완료 -F _fzf_complete_doge -o 기본값 -o bashdefault 총독
fzf의 출력을 사후 처리해야 하는 경우 _fzf_complete_COMMAND_post
다음과 같이 정의합니다.
_fzf_complete_foo() { _fzf_complete --multi --reverse --header-lines=3 -- "$@" < <( ls -al )}_fzf_complete_foo_post() { awk '{인쇄 $NF}'} [ -n "$BASH" ] && 완료 -F _fzf_complete_foo -o 기본값 -o bashdefault foo
README-VIM.md를 참조하세요.
fzf는 빠릅니다. 대부분의 사용 사례에서는 성능이 문제가 되지 않습니다. 그러나 성능에 영향을 미칠 수 있는 옵션을 알고 싶을 수도 있습니다.
--ansi
fzf에게 입력에서 ANSI 색상 코드를 추출하고 구문 분석하도록 지시하므로 초기 스캔 속도가 느려집니다. 따라서 $FZF_DEFAULT_OPTS
에 추가하는 것은 권장되지 않습니다.
--nth
각 행을 토큰화해야 하기 때문에 fzf를 느리게 만듭니다.
--with-nth
fzf가 각 줄을 토큰화하고 재조립해야 하므로 fzf 속도를 느리게 만듭니다.
fzf( execute
, execute-silent
)를 종료하지 않고도 외부 프로세스를 시작하기 위한 키 바인딩을 설정할 수 있습니다.
# F1을 눌러 fzf를 떠나지 않고 less로 파일을 엽니다.# CTRL-Y를 눌러 줄을 클립보드에 복사하고 fzf를 중단합니다(pbcopy 필요)fzf --bind 'f1:execute(less -f {}),ctrl-y: 실행-자동(echo {} | pbcopy)+abort'
자세한 내용은 매뉴얼 페이지의 키 바인딩 섹션을 참조하십시오.
become(...)
위에 설명된 execute(...)
/ execute-silent(...)
와 유사하지만 명령을 실행하고 완료되면 fzf로 돌아오는 대신 fzf를 다음 작업을 위한 새로운 프로세스로 전환합니다. 명령.
fzf --bind 'enter:become(vim {})'
겉으로는 동일해 보이는 명령 대체 vim "$(fzf)"
와 비교할 때 이 접근 방식에는 몇 가지 장점이 있습니다.
CTRL-C 로 fzf를 종료하면 Vim은 빈 파일을 열지 않습니다.
빈 결과에서 Enter 키를 누르면 Vim은 빈 파일을 열지 않습니다.
공백이 있는 경우에도 여러 선택을 처리할 수 있습니다.
fzf --multi --bind 'enter:become(vim {+})'
공평하게 말하면 fzf --print0 | xargs -0 -o vim
대신 vim "$(fzf)"
언급된 모든 문제를 해결합니다. 그럼에도 불구하고, become(...)
다양한 시나리오에서 여전히 추가 이점을 제공합니다.
래핑 스크립트 없이 다양한 방식으로 결과를 처리하도록 여러 바인딩을 설정할 수 있습니다.
fzf --bind 'enter:become(vim {}),ctrl-e:become(emacs {})'
이전에는 --expect=ctrl-e
사용하고 fzf 출력의 첫 번째 줄을 확인해야 했습니다.
fzf의 필드 인덱스 표현식을 사용하여 후속 명령을 쉽게 작성할 수 있습니다.
# Vim에서 파일을 열고 linegit grep --line-number 로 이동합니다. |fzf --delimiter : --nth 3.. --bind 'enter:become(vim {1} +{2})'
reload
작업을 키나 이벤트에 바인딩하면 fzf가 후보 목록을 동적으로 다시 로드하도록 할 수 있습니다. 자세한 내용은 #1750을 참조하세요.
ps -ef | fzf --bind 'ctrl-r:reload(ps -ef)' --header '다시 로드하려면 CTRL-R을 누르세요.' --header-lines=1 --높이=50% --레이아웃=역방향
FZF_DEFAULT_COMMAND='찾기. -f'를 입력하세요 fzf --bind 'ctrl-d:reload(find . -type d),ctrl-f:reload(eval "$FZF_DEFAULT_COMMAND")' --높이=50% --레이아웃=역방향
다음 예에서는 fzf를 ripgrep의 선택기 인터페이스로 사용합니다. change
이벤트에 reload
작업을 바인딩했으므로 fzf에 입력할 때마다 ripgrep 프로세스는 자리 표시자 표현식 {q}
로 표시되는 업데이트된 쿼리 문자열로 다시 시작됩니다. 또한 fzf가 2차 필터링을 수행하지 않도록 --disabled
옵션을 사용했다는 점에 유의하세요.
: | rg_prefix='rg --column --line-number --no-heading --color=always --smart-case' fzf --bind '시작:다시 로드:$rg_prefix ""' --bind 'change:reload:$rg_prefix {q} || 진실' --bind 'enter:become(vim {1} +{2})' --ansi --비활성화 --높이=50% --레이아웃=역방향
ripgrep이 일치하는 항목을 찾지 못하면 0이 아닌 종료 상태로 종료되며 fzf는 이에 대해 경고합니다. 경고 메시지를 표시하지 않기 위해 || true
추가했습니다. 명령에 || true
이므로 항상 0으로 종료됩니다.
보다 정교한 예를 보려면 "fzf를 대화형 Ripgrep 실행 프로그램으로 사용"을 참조하세요.
--preview
옵션이 설정되면 fzf는 현재 행을 인수로 사용하여 외부 프로세스를 자동으로 시작하고 분할 창에 결과를 표시합니다. $SHELL
$SHELL -c COMMAND
사용하여 명령을 실행하는 데 사용됩니다. 창은 마우스나 사용자 정의 키 바인딩을 사용하여 스크롤할 수 있습니다.
# {}는 초점이 맞춰진 linefzf --preview 'cat {}'의 작은따옴표 문자열로 대체됩니다.
미리보기 창은 ANSI 색상을 지원하므로 Bat 또는 강조 표시와 같이 파일 내용을 구문 강조 표시하는 모든 프로그램을 사용할 수 있습니다.
fzf --preview 'bat --color=always {}' --preview-window '~3'
--preview-window
옵션을 사용하여 미리보기 창의 크기, 위치 및 테두리를 사용자 정의할 수 있으며, --color
옵션을 사용하여 전경색과 배경색을 사용자 정의할 수 있습니다. 예를 들어,
fzf --height 40% --layout reverse --info inline --border --preview 'file {}' --preview-window up,1,border-horizontal --bind 'ctrl-/:change-preview-window(50%|숨김|)' --color 'fg:#bbccdd,fg+:#ddeeff,bg:#334455,preview-bg:#223344,border:#778899'
전체 옵션 목록은 매뉴얼 페이지( man fzf
)를 참조하십시오.
더 고급 예제는 여기에서 찾을 수 있습니다.
경고
fzf는 파일 찾기가 아닌 범용 텍스트 필터이므로 $FZF_DEFAULT_OPTS
에 --preview
옵션을 추가하는 것은 좋지 않습니다 .
# *********************# ** 이렇게 하지 마세요! **# *********************export FZF_DEFAULT_OPTS='--preview "bat --style=numbers --color=always --line-range :500 {}"'# bat는 filesps -ef | 목록 이외의 입력에서는 작동하지 않습니다. fzf 시퀀스 100 | fzf역사 | fzf
fzf는 다음 프로토콜 중 하나를 사용하여 미리보기 창에 이미지를 표시할 수 있습니다.
키티 그래픽 프로토콜
iTerm2 인라인 이미지 프로토콜
식셀
자세한 내용은 bin/fzf-preview.sh 스크립트를 참조하세요.
fzf --preview 'fzf-preview.sh {}'
.gitignore
존중 .gitignore
존중하면서 fd, ripgrep 또는 Silver Searcher를 사용하여 파일 시스템을 탐색할 수 있습니다.
# fd의 출력을 fzffd --type f --strip-cwd-prefix | fzf# fd를 fzfexport의 기본 소스로 설정 FZF_DEFAULT_COMMAND='fd --type f --strip-cwd-prefix'# 이제 fzf(파이프 없음)는 fd 명령을 사용하여 목록을 생성합니다fzf# 명령을 적용하려면 CTRL-T FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND" 내보내기도 가능
명령이 기호 링크를 따르도록 하고 숨겨진 파일을 제외하지 않으려면 다음 명령을 사용하십시오.
FZF_DEFAULT_COMMAND='fd --type f --strip-cwd-prefix --hidden --follow --exclude .git' 내보내기
bash 및 zsh와 달리 fish의 CTRL-T
키 바인딩은 명령줄의 마지막 토큰을 재귀 검색의 루트 디렉터리로 사용합니다. 예를 들어, 다음 명령줄 끝에서 CTRL-T
누르십시오.
ls /var/
/var/
아래의 모든 파일과 디렉터리가 나열됩니다.
사용자 정의 FZF_CTRL_T_COMMAND
사용할 때 확장되지 않은 $dir
변수를 사용하여 이 기능을 활용하세요. $dir
의 기본값은 .
마지막 토큰이 유효한 디렉터리가 아닌 경우. 예:
set -g FZF_CTRL_T_COMMAND "명령 find -L $dir -type f 2> /dev/null | sed '1d; s#^./##'"
Vitor Mello가 만든 fzf Theme Playground는 대화형으로 fzf 테마를 만들 수 있는 웹페이지입니다.
https://github.com/junegunn/fzf/wiki/Related-projects
MIT 라이센스(MIT)
Copyright (c) 2013-2024 최준건