6세 딸「아빠, 프로젝트 폴더를 찾는데 몇 시간 걸릴까?」【ghq+fzf+zsh】

소개



딸(6세)「아빠, 지금 나를 위한 블로그 만들고 있나요?」
딸「블로그는 어떤 식으로 만드는 거야?」

와이「코드라고 하는 것을 바탕으로 움직이는 거야」
와이「잠깐 기다려줘.지금 홈디렉토리야…
와이「확실히 projects/myproject01 같은 이름 했을까…
와이「cd projects/myproject01 ...어라, 없구나」
와이 "ls 해 보자."(포치
$ ls
. .. myproj
myproj1 myproj001 myproject1
myproj2 myproject2 myproject3
yabai-proj sugoi-project

와이(… 빌어 먹을 같은 구조하고 있는 얀)
와이「미안. 딸, 좀 기다려줘」

딸「방도 더러운 데다, 디렉토리도 정리되어 있지 않아」

어떻게 할까



ghq 와 fzf(Fuzzy Finder)를 사용하면 필요한 프로젝트로 순식간에 이동할 수 있습니다. 자신의 환경이라면 이렇게 작동합니다.



ghq란?



GitHub 등에서 호스팅되는 리포지토리를 복제할 때 디렉터리를 지정하여 리포지토리 관리를 단순화하는 도구입니다.
$ ghq get https://github.com/motemen/ghq
 clone https://github.com/motemen/ghq -> /Users/amachi/src/github.com/motemen/ghq
 git clone https://github.com/motemen/ghq /Users/amachi/src/github.com/motemen/ghq
git clone 대신에 ghq get 로 실행하면, 현재 디렉토리에 관계없이, 지정된 룰로 git clone 할 수 있는 것을 알 수 있습니다.

fzf란?



fzf(Fuzzy Finder)는 인터랙티브하고 증분적인 검색 필터 도구입니다.
명령줄에서 fzf 명령을 전달하고 검색을 수행하면 해당 결과를 대화식으로 반환합니다. 간단히 말하면, Google의 검색 기능과 비슷한 움직임을 커맨드 라인에서 할 수 있습니다.

배포 준비



mac이면 homebrew를 통해 설치할 수 있습니다.
$ brew install ghq fzf

설치 후, ghq에서 어디를 원점의 디렉토리로 할지 git의 설정 파일을 추가합니다.
$ git config --global ghq.root $HOME/src
$ less ~/.gitconfig
--- 追加された部分  ---
[ghq]
    root = /Users/amachi/src
--------------------

ghq, fzf 결합



먼저 ghq list 에서 ghq root 아래에 있는 프로젝트 목록을 검색할 수 있습니다. 여기에서 fzf로 증분을 검색할 수 있습니다.

또한 fzf에서는 --preview 옵션으로, 오른쪽 절반의 화면을 미리보기에 이용할 수 있으므로, 여기에 프로젝트를 선택하는데 편리한 정보를 표시해 갑니다.

지금까지 시도한 것은 아래의 3 패턴이지만, 자신은 3. プロジェクトルートのファイルリスト를 좋아합니다.

preview : README 파일


ghq list | fzf --preview "bat --color=always --style=header,grid --line-range :80 $(ghq root)/{}/README.*"



preview : git log 정보


ghq list | fzf --preview "git --git-dir $(ghq root)/{}/.git log --date=short --pretty=format:'-%C(yellow)%d%Creset %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' --color"



preview : 프로젝트 루트 파일 목록


ghq list | fzf --preview "ls -laTp $(ghq root)/{} | tail -n+4 | awk '{print \$9\"/\"\$6\"/\"\$7 \" \" \$10}'"



더욱 사용하기 쉽다 : zsh의 키 바인딩



또한 zsh의 키 바인딩에 등록하여 프로젝트를 선택한 후 프로젝트 바로 아래로 이동할 수 있습니다.
다음과 같은 경우 Ctrl+]를 누르면 프로젝트 선택 화면이 열립니다.
function ghq-fzf() {
  local src=$(ghq list | fzf --preview "ls -laTp $(ghq root)/{} | tail -n+4 | awk '{print \$9\"/\"\$6\"/\"\$7 \" \" \$10}'")
  if [ -n "$src" ]; then
    BUFFER="cd $(ghq root)/$src"
    zle accept-line
  fi
  zle -R -c
}
zle -N ghq-fzf
bindkey '^]' ghq-fzf

요약



딸「아빠, @ 야메타로 씨같은 기사로 하는 일찍 포기했네」
와이「그 형식으로 정리한다는 것은 힘들겠지」

딸「그리고, 김으로 만들었다 tomoyamachi로 채우는 모험 달력
딸「첫날부터 쉬었지...」
와이「첫날이 일요일인 것은 힘들었구나」

딸「…」

좋은 웹페이지 즐겨찾기