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

1

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

    
por Yuki 05.08.2018 / 17:12

1 resposta

0

ALT . não é do meu conhecimento bem conhecido. Eu estou supondo que isso é definido por algo que você carregou na sua startup do bash. (O que isso faz por você?)

$! é o ID do processo do processo filho iniciado mais recentemente. Eu suponho que isso é não o que você pretendia digitar. :)

!$ é uma expansão de histórico (abreviada) que deve sob circunstâncias padrão expandir para o último argumento do comando anterior. A expansão do histórico do zsh é meticulosamente documentada no manual do zsh .

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

echo $HISTCHARS

Se isso não não começar com ! , então algo na inicialização do zsh definiu um valor diferente, e expansões de histórico padrão e conhecidas como !! e !$ não serão trabalhe para você.

Atualização:

Acontece que o primeiro parágrafo que escrevi acima está completamente errado. Eu posso não ter sabido sobre ALT . , mas isso pode ser devido ao fato de eu ter “sempre” usado zsh com o modo vi ativado. De fato, ALT . (e ALT _ , que faz a mesma coisa) são ativados no emacs padrão do zsh combinações de teclas. Eles estão vinculados ao widget ZLE insert-last-word , que faz o que você descreve.

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

bindkey -M emacs "^[." insert-last-word \
                 "^[_" insert-last-word
    
por 01.11.2018 / 10:17