Você pode configurar o compinit para expandir os parâmetros no seu ~/.zshrc
:
zstyle ':completion:*' completer _expand _complete
autoload -Uz compinit
compinit
Esta é uma configuração mínima, se você tiver compinit já habilitado, deve ser suficiente adicionar _expand
às configurações de completer
Existe também o item expand-word
que está por padrão ligado a ^X*
( Ctrl + x * ) que essencialmente faz o mesmo que a mesma ligação no bash.
Nota: Ambos os métodos funcionam apenas na palavra atual.
Como alternativa, em zsh
você pode realmente fazer o que pediu em sua pergunta original: transformar um caminho relativo em um caminho absoluto. Este é um exemplo ligeiramente modificado da% man_de% manpage:
# load necessary utility function
autoload -Uz modify-current-argument
# define helper function for actual work
expand-and-abspath () {
# expand the path (for example '~' -> '/home/youruser')
REPLY=${~1}
# transform into absolute path (use ':A' if you want to resolve symlinks)
REPLY=${REPLY:a}
}
# actual widget function
abspath-word() {
# use helper function on current word
modify-current-argument expand-and-abspath
}
# create zle widget 'abspath-word' (with function of the same name)
zle -N abspath-word
# bind widget to "Ctrl+x p"
bindkey '^Xp' abspath-word
Isso define o widget zshcontrib(1)
, que substitui a palavra atual por uma representação de caminho absoluto e a vincula a Ctrl + x p .