zsh alias Erweiterung

7

Ist es möglich, zsh so zu konfigurieren, dass globale Aliase während der Tab-Vervollständigung erweitert werden? Zum Beispiel habe ich die allgemeinen Aliase:

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

aber wenn ich zum Beispiel cd .../some<tab>tippe, wird es nicht auf cd .../somethingoder erweitert cd ../../something. Infolgedessen verwende ich diese praktischen Aliase häufig nicht, da ich nicht genau angeben kann, wohin ich gehen möchte.

Bryan Ward
quelle

Antworten:

6

Versuchen Sie, nach zsh-Abkürzungen zu suchen . Mit ihnen können Sie eine "Abkürzung" eingeben, die automatisch durch die vollständige Form ersetzt wird, wenn Sie eine magische Taste wie das Leerzeichen drücken. So können Sie eine erstellen , die sich ändert ...<SPACE>zu ../...

Dies ist beispielsweise das, was Sie in Ihrem Profil benötigen:

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
Dogbane
quelle
1

Ich habe ein benutzerdefiniertes ZLE-Widget dafür. Legen Sie es einfach irgendwo in einem Verzeichnis ab $fpath. Sie können es dann auf diese Weise konfigurieren .

nicoulaj
quelle