fzf, fd and bat

fzf

fzf는 terminal에서 사용할 수 있는 다목적 fuzzy finder이다.

asciicast

iterm에서 ctrl+t를 누르면 fzf가 활성화되고, fuzzy matching으로 디렉토리나 파일을 찾을 수 있다. fzf는 기본적으로 find를 활용하지만, 성능이 더 좋은 fd로 대체하는 것을 추천한다.

bat

cat의 발전된 형태라고 보면 된다.

asciicast

terminal에서 다른 유틸리티들과 함께 활용하기에 적합한 형태는 아니지만, 사람이 읽기 편한 형식으로 포매팅을 해준다. line number도 보여준다. git과의 integration도 있다.

앞서 설명한 fzf와 연동할 수도 있는데, 위 asciinema 데모에서 이미 통합된 bat을 볼 수 있고, 그 스크린샷은 아래와 같다.

image.png

fzf 검색결과 오른쪽에 작게 preview를 bat으로 볼 수 있다.

How to Config fzf, fd and bat

# fzf
export FZF_DEFAULT_COMMAND="fd --type directory --type file --color=always -H -E .git -E bower_components -E node_modules
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
export FZF_DEFAULT_OPTS="--ansi --preview 'bat --color=always --style=numbers --line-range=:500 {}'"

# bat
export BAT_THEME="ansi"
  1. FZF_DEFAULT_COMMAND: find 대신 fd를 활용하도록, 그리고 파일과 디렉토리 모두를 대상으로 검색을 수행하도록, .git, bower_components, node_modules 등의 폴더를 제외하도록 하는 설정이다.
  2. FZF_CTRL_T_COMMAND: iTerm에서 ctrl+t를 눌렀을 때 FZF_DEFAULT_COMMAND를 그대로 실행하도록 한다.
  3. FZF_DEFAULT_OPTS: 현재 터미널에서 쓰고 있는 색상 테마를 그대로 사용하도록, preview는 bat을 사용하도록 한다.
  4. BAT_THEME: 터미널에서 쓰는 색상 테마를 그대로 사용한다.