zsh 별칭 확장

zsh 별칭 확장

탭 완료 중에 전역 별칭을 확장하도록 zsh를 구성할 수 있습니까? 예를 들어, 공통 별칭이 있습니다.

alias -g '...'='../..'
alias -g '....'='../../..'

하지만 입력해도 또는 cd .../some<tab>로 확장되지 않습니다 . 따라서 가고 싶은 곳을 탭으로 이동할 수 없기 때문에 이러한 편리한 별칭을 자주 사용하지 않습니다.cd .../somethingcd ../../something

답변1

찾아보세요zsh 약어. 스페이스와 같은 마법 키를 누르면 자동으로 전체 형태로 바뀌는 "약어"를 입력할 수 있습니다. 따라서 변경 ...<SPACE>사항을 만들 수 있습니다 ../...

예를 들어 프로필에는 다음이 필요합니다.

typeset -A abbrevs
abbrevs=(
        "..." "../.."
        "...." "../../.."        
)

#create aliases for the abbrevs too
for abbr in ${(k)abbrevs}; do
   alias -g $abbr="${abbrevs[$abbr]}"
done

my-expand-abbrev() {
    local MATCH
    LBUFFER=${LBUFFER%%(#m)[_a-zA-Z0-9]#}
    LBUFFER+=${abbrevs[$MATCH]:-$MATCH}
    zle self-insert
}

zle -N my-expand-abbrev    
bindkey " " my-expand-abbrev 
bindkey -M isearch " " self-insert

답변2

나는맞춤형 ZLE 위젯이렇게 하려면 에 넣으면 됩니다 $fpath. 그런 다음 구성할 수 있습니다.이 방법.

관련 정보