FZF커맨드 커스터마이징하기

간단한 예제소개

Harry The Great
해리의 유목코딩
3 min readFeb 6, 2020

--

이전 글에서 FZF를 사용해서 간단한 fzf검색법에 대해 소개했었는데 이번에는 커스텀 함수와 커스텀 옵션으로 단축키를 추가하는 방법에 대해 작성해보겠습니다. 주로 공식문서에 있는 내용을 기반으로 하였습니다.

사용된 파이프라인 커맨드로는 preview 명령어에 bat, 파일트리리를 보기 위한 명령어에 lsd, 파일 검색은 fd, 코드 검색은 rg를 사용하였습니다. FZF를 제외하곤 사용하시는 다른 명령어가 있다면 원하시는 걸로 바꾸셔도 크게 문제 되지 않습니다.

Find In File

ripgrep으로 현재 디렉터리 이하 매칭 되는 텍스트를 가진 모든 파일들을 보여주는 함수입니다. 이전에 작성했던 코드를 스니펫처럼 빠르게 찾아볼 때 유용합니다.

소스코드

FZF에 미리보기 + 바인드키 추가버전입니다. 현재 디렉터리부터 위치한 파일들 중 gitignore를 제외한 모든 파일을 검색합니다. 바인딩한 단축키는 아래와 같습니다.

  • Ctrl +U => 위로검색
  • Ctrl + D => 아래로 검색
  • Alt + U => 미리보기 위로스크롤
  • Alt + D => 미리보기 아래로 스크롤
  • ? => 미리보기토글
  • Alt + V => neo vim으로 파일열기
  • Ctrl+Y => 복사 (Mac이기때문에 pbcopy로 되어있습니다.)

옵션 값을 $1, $2 두 개로 주었는데 ripgrep에서 태그 단위로 파일을 묶어 원하는 파일 확장자만 포맷만 검색하기 추가하였기 때문에 하나만 주셔도 무방합니다. 공식문서에도 preview를 Default값으로 하는 것을 권장하고 있지 않기 때문에 항상 기본 검색 결과를 Preview를 꺼놓고 특정키로 토글 하는 방식이 좋은것같습니다.

Search Directory

현재위치부터의 디렉토리를 출력해주고 엔터를 누르면 이동하는 명령어입니다. 디렉토리만 검색을하며 미리보기에는 최대 2depth까지만 출력됩니다. 프로젝트들이 모여있는 디렉토리를 검색할때 좋습니다.

사생활 보호를 위해 다운받은 라이브러리에서 시연하다보니 주소가 상당히 깁니다…

이전 fif와 비슷하지만 디렉터리만 검색하기 때문에 엔터를 입력할 경우 해당 디렉터리로 이동하도록 되어있습니다. 또 Bat이 아닌 lsd명령어를 사용하여 2 DEPTH까지만 디렉터리를 표시하고 있습니다.

History

FZF는 기본값으로 Ctrl + R을 히스토리 FZF검색으로 되어있습니다. 하지만 위에서 사용한 방법같이 사용하면 라인넘버도 함께 따라오기때문에 적절하게 잘라주어야합니다. 아래와 같이 echo 명령어를 이용하여 라인넘버를 제외하고 가져오도록 할 수 있습니다.

이전의 bind 명령어를 활용하여 추가적인 페이지 스크롤링도 넣을 수 있고 fc 명령어 단축키도 추가로 넣어 커스텀할 수도 있습니다.

마치며

추가적인 페이지 스크롤링이나 fc 명령어 단축키도 추가로 넣어 커스텀할 수 있습니다. 시중에 Fuzzy 검색 관련한 툴들은 많지만 FZF가 가장 많이 사랑받는 이유는 상세한 Docs와 Github Issue인 것 같습니다. 특히 안하무인으로 그냥 안된다 되는 코드를 짜 달라 하는 요구들도 친절하게 다 답글 달아주시고 직접 코드를 짜서 이슈에 댓글 달아주신 개발자분이 참 대단하신 것 같습니다. Example 이외에 깃헙 이슈만 쭉 봐도 웬만한 예제들은 다 찾을 수 있어 참 좋은 것 같습니다.

--

--

Harry The Great
해리의 유목코딩

Android & IOS Developer 😀 미디움 이외에 스니펫이나 디버그노트로 활용하는 https://www.harrymikoshi.com/ 블로그도 운영하고있습니다.