zsh expansão de alias

5

É possível configurar o zsh para expandir aliases globais durante a conclusão da tabulação? Por exemplo, tenho os alias comuns:

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

mas quando digito, por exemplo, cd .../some<tab> , ele não se expande para cd .../something ou cd ../../something . Conseqüentemente, eu frequentemente não usarei esses aliases úteis porque não posso tabular o caminho completo para onde quero ir.

    
por Bryan Ward 19.01.2011 / 23:08

2 respostas

5

Tente pesquisar abreviações do zsh . Eles permitem que você insira uma "abreviação" que é automaticamente substituída por sua forma completa quando você pressiona uma tecla mágica como o espaço. Assim, você pode criar um que altere ...<SPACE> para ../.. .

Por exemplo, é isso que você precisa no seu perfil:

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
    
por 19.01.2011 / 23:35
1

Eu tenho um widget ZLE personalizado para isso, basta soltá-lo em algum lugar em um diretório em $fpath . Você pode então configurá-lo desta forma .

    
por 20.01.2011 / 21:45