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

おすすめ記事