是否可以配置zsh以在选项卡完成期间扩展全局别名?例如,我有常见的别名:
alias -g '...'='../..'
alias -g '....'='../../..'
Run Code Online (Sandbox Code Playgroud)
但是当我输入时,例如,cd .../some<tab>它不会扩展为cd .../something或cd ../../something.因此,我经常不会使用这些方便的别名,因为它们与制表符完成不兼容.
fow*_*fow 10
我是Mikael Magnusson的用户rationalise-dot.从我的zshrc:
# This was written entirely by Mikael Magnusson (Mikachu)
# Basically type '...' to get '../..' with successive .'s adding /..
function rationalise-dot {
local MATCH # keep the regex match from leaking to the environment
if [[ $LBUFFER =~ '(^|/| | |'$'\n''|\||;|&)\.\.$' ]]; then
LBUFFER+=/
zle self-insert
zle self-insert
else
zle self-insert
fi
}
zle -N rationalise-dot
bindkey . rationalise-dot
# without this, typing a . aborts incremental history search
bindkey -M isearch . self-insert
Run Code Online (Sandbox Code Playgroud)
尝试查找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
}
bindkey " " my-expand-abbrev
Run Code Online (Sandbox Code Playgroud)