터미널에서 파일 경로 지정을 peco를 사용하여 빠릅니다.
Ctrl + F
에서의 파일 검색을 좀 더 사용하기 쉽게 해 보았습니다.Git 리포지토리 검색이나 커멘드 이력 검색은 매우 쾌적했습니다만, 파일 검색이 조금 사용하기 어려웠기 때문에 개량해 보았습니다.
도전
개량 후
(아무것도 입력하지 않고) <Ctrl + F>
파일을 선택한 경우
디렉토리를 선택한 경우
터미널에 아무 것도 입력하지 않은 상태에서 호출하면 현재 디렉토리 아래의 파일이 후보로 열거됩니다.
선택 후 파일 유형에 따라 동작이 변경됩니다.
command <Ctrl+F>
커멘드등을 입력해, 스페이스를 입력한 후, 호출했을 경우도, 현재 디렉토리 이하의 파일이 후보로서 열거됩니다.
선택 후 입력 도중이었던 터미널 끝에 파일 경로가 입력됩니다.
command /path/to/base/<Ctrl+F>
파일 경로의 입력 도중에 호출했을 경우는, 그 패스 이하의 파일이 후보로서 열거됩니다. (이것이 하고 싶었다)
선택 후 입력 도중이었던 터미널 끝에 파일 경로가 입력됩니다.
덧붙여 입력중의 패스가 실재하지 않는 경우는, 현재 디렉토리 이하가 후보가 됩니다.
.zshrc
.zshrc 중에 다음 함수를 정의하면 사용할 수 있습니다.
export EDITOR=vi
function peco-find () {
local base="."
if [ -n "$LBUFFER" ] && [ ! "$LBUFFER" =~ " $" ]; then
local last_path="$(echo $LBUFFER | sed -e 's/^.*\ //g')"
if [ -d "$last_path" ]; then
base="$last_path"
fi
fi
local filepath="$(find $base | grep -v '/\.' | peco --prompt 'PATH>')"
[ -z "$filepath" ] && return
if [ -n "$LBUFFER" ]; then
if [ "$base" = "." ]; then
BUFFER="$LBUFFER$filepath"
else
BUFFER="$(echo $LBUFFER | sed -e "s#${base}\$##g")$filepath"
fi
else
if [ -d "$filepath" ]; then
BUFFER="cd $filepath"
elif [ -f "$filepath" ]; then
BUFFER="$EDITOR $filepath"
fi
zle accept-line
fi
CURSOR=$#BUFFER
}
zle -N peco-find
bindkey '^F' peco-find
운영 환경
다음 환경에서 확인했습니다.
Reference
이 문제에 관하여(터미널에서 파일 경로 지정을 peco를 사용하여 빠릅니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/reireias/items/6723e65b15fe9d153116텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)