cd 기록을 저장하고 peco 또는 fzf를 사용하여 디렉토리 이동
4691 단어 ShellScriptfzfZshPeco
무엇을 하고 있는가
auto_cd
또는 일반 cd
에서도 디렉토리 이동 중에 해당 디렉토리의 로그를 수집합니다 위의 gif에서는 fzf를 사용합니다. 또한
powered_cd
를 c
로 별칭합니다.로그에 대해서는, 같은 디렉토리는 2개 이상 모이지 않게 되어 있어, 새로운 순서로부터 서제스트 되기 때문에 별로 낭비는 없다고 생각합니다.
코드
다음을 .zshrc 라든지에 복사해 주면 움직인다고 생각합니다.
.zshrc
function chpwd() {
powered_cd_add_log
}
function powered_cd_add_log() {
local i=0
cat ~/.powered_cd.log | while read line; do
(( i++ ))
if [ i = 30 ]; then
sed -i -e "30,30d" ~/.powered_cd.log
elif [ "$line" = "$PWD" ]; then
sed -i -e "${i},${i}d" ~/.powered_cd.log
fi
done
echo "$PWD" >> ~/.powered_cd.log
}
function powered_cd() {
if [ $# = 0 ]; then
cd $(gtac ~/.powered_cd.log | fzf)
elif [ $# = 1 ]; then
cd $1
else
echo "powered_cd: too many arguments"
fi
}
_powered_cd() {
_files -/
}
compdef _powered_cd powered_cd
[ -e ~/.powered_cd.log ] || touch ~/.powered_cd.log
fzf
곳은 사용하고 있는 것(peco라든지 percol라든지)로 바꾸어 주세요.그리고
gtac
는 tac
의 GNU 버전으로, OS X에는 기본적으로 gtac
가 들어 있기 때문에 gtac
로하고 있습니다. 다른 OS의 경우 tac
로 설정하십시오.나중에 c 라든지 짧은 명령에 별칭하면 편리합니다 (또는 필수)
.zshrc
alias c="powered_cd"
또한 원래
이 기사에 피쳐된 것입니다. 링크 대상
enhancd
이 이 기사의 것보다 고기능입니다. 하지만, zsh 유저라면 누구나 사용하고 있을 것이다 auto_cd
에 로그 추가가 반응하지 않거나, cd -
를 치는 것은 조금 번거로운 (물론 powered_cd
쪽이 치는 것은 귀찮습니다만 별칭 에서 어떻게든 할 수 있다) 1 이 명령을 만들었습니다.enhancd도 `alias c="__enhancd::cd -"로 명령 타입 수를 줄일 수 있습니다 ↩
Reference
이 문제에 관하여(cd 기록을 저장하고 peco 또는 fzf를 사용하여 디렉토리 이동), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/arks22/items/8515a7f4eab37cfbfb17텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)