zsh 자동 완성 디렉토리

zsh 자동 완성 디렉토리

저는 zsh를 처음 접했고 자주 하는 일 중 하나는 내 Scripts 디렉토리에 있는 쉘 스크립트를 실행하는 것입니다. 항상 Scripts 디렉터리에 있는 것은 아니지만... $HOME에 있을 수도 있으므로 을 입력 Sc<Tab>하고 자동 완성 Scripts/하고 거기에서 실행하려는 스크립트를 자동 완성할 수 있습니다. 물론...

그러나 zsh는 기본적으로 이 작업을 수행하지 않는 것 같습니다. or를 입력하면 ls디렉토리 이름이 자동 완성됩니다 cd. 먼저 디렉토리를 자동 완성하려고 하면 전혀 자동 완성되지 않습니다.

이 동작을 바꿀 수 있는 방법이 있나요?

편집: 나는 그것을 할 수 ./Sc<Tab>있고 자동으로 그것을 수행한다는 것을 알았습니다. 나는 자동 완성을 위해 무언가를 입력하기 전에 입력할 필요가 없는 데 익숙했기 ./때문에 이것이 zsh에서 가능한지 여전히 궁금하지만 지금은 허용되는 해결 방법입니다.

답변1

정확히 요청한 내용은 아니지만 s를 사용하여 스크립트를 실행합니다. 예를 들어 ~/Scripts/run-stuff.sh 파일이 있는 경우 s run-stuff.sh를 입력하면 스크립트가 실행됩니다. 또한 스크립트 이름에 대한 탭 완성도 수행합니다. 수행하지 않는 유일한 작업은 스크립트 디렉터리 내의 하위 디렉터리를 처리하는 것입니다.

# Completion for s (scripts)
_s_comp() {
    if [ $OS = "mac" ]; then
        local LS=gls;
    else
        local LS=ls;
    fi
    reply=(`$LS --ignore-backups $HOME/Scripts/`);
}

compctl -K _s_comp s

별칭이 필요할 수도 있습니다.alias s="$HOME/Scripts

편집: 현재 어떤 디렉토리에 있는지에 관계없이 작동합니다.

답변2

이 지시문을 다음에 추가할 수 있습니다 ~/.zshrc.

setopt autocd

cd또한 입력하지 않고도 디렉토리를 변경할 수 있다는 유익한 부작용도 있습니다 . :)

관련 정보