Não é possível obter argumentos do comando anterior no ZSH

Não é possível obter argumentos do comando anterior no ZSH

Existem atalhos bem conhecidos para obter argumentos do comando anterior no bash, como Alt+.or $!, etc. Nada disso está funcionando no meu zsh, estou usando alguns módulos zprezto. Não consegui encontrar nada sobre isso sendo alterado pelos módulos zprezto. Pode ser alguma configuração ZSH que estou faltando ou que posso ter definido e desabilitado esse comportamento?

Responder1

ALT.não é, que eu saiba, bem conhecido. Presumo que isso seja definido por algo que você carregou na inicialização do bash. (O que ele faz para você?)

$!é o ID do processo filho iniciado mais recentemente. Presumo que isso sejanãoo que você pretendia digitar. :)

!$é uma expansão (abreviada) da história quedeveem circunstâncias padrão, expanda para o último argumento do comando anterior. A expansão da história do zsh é meticulosamente documentadano manual zsh.

As expansões do histórico geralmente começam com !, mas é possível alterar isso definindo o valor de $HISTCHARS: O primeiro caractere de $HISTCHARSserá usado como o caractere que inicia uma expansão do histórico. Por padrão, $HISTCHARSé definido com um valor de !^#. Você pode verificar o valor em seu sistema com:

echo $HISTCHARS

Se isso acontecernãocomece com !, então algo em sua inicialização zsh definiu um valor diferente e expansões de histórico padrão e conhecidas como !!e !$não funcionarão para você.

Atualizar:

Acontece que o primeiro parágrafo que escrevi acima está completamente errado. Posso não saber sobre o ALT., mas isso pode ser devido ao fato de que “sempre” usei o zsh com o modo vi ativado. Na verdade, ALT.(e ALT_, que faz a mesma coisa) estão habilitados nas combinações de teclas padrão do emacs do zsh. Eles estão vinculados ao widget ZLE insert-last-word, que faz o que você descreve.

Se você estiver usando zsh com as combinações de teclas padrão do emacs e ALT.não estiver funcionando para você, então algo que você está carregando na inicialização do shell está substituindo-o. Você pode restabelecer as combinações de teclas padrão com:

bindkey -M emacs "^[." insert-last-word \
                 "^[_" insert-last-word

informação relacionada