expansão do histórico de oh-my-zsh no espaço ou tabulação, mas não entra

1

Em zsh com oh-my-zsh, você pode inserir um comando de expansão de histórico e pressionar espaço, tabulação ou digitação, e ele será expandido. Por exemplo:

ls /path/to/some/directory
cd !$<enter>

se expande para

cd /path/to/some/directory

Mas, na verdade, não executa o comando. Ele permanece no prompt para edição adicional e você precisa pressionar Enter uma segunda vez para executar o comando.

Eu estava instalando o arch linux na noite passada e descobri que as configurações do shell de instalação do zsh possuem expansão de histórico na guia e no espaço, mas pressionar enter executa o comando expandido imediatamente, sem exigir que o usuário pressione enter novamente.

Isto é o que eu quero porque me poupa uma tecla. Se eu quiser editar a expansão, eu poderia pressionar a guia. Se eu quiser executar o comando imediatamente, eu posso pressionar enter.

Acho que tem algo a ver com magic-space e vejo a seguinte linha em .oh-my-zsh/lib/key-bindings.zsh

bindkey ' ' magic-space        # [Space] - do history expansion

Mas não consigo encontrar onde enter e tab também estão vinculados à expansão ou se há alguma opção para executar o comando imediatamente ao entrar.

    
por Matthew 11.12.2017 / 21:08

1 resposta

1

Isso tem me incomodado há anos desde que eu comecei a usar o zsh, mas eu finalmente gastei o tempo para cavar até que eu descobrisse e isso é causado pela opção HIST_VERIFY . A opção está ativada em .oh-my-zsh/lib/history.zsh e precisa ser substituída.

A adição da linha a seguir a .zshrc corrige o comportamento:

unsetopt HIST_VERIFY

De man zshoptions :

HIST_VERIFY

Whenever the user enters a line with history expansion, don't execute the line directly; instead, perform history expansion and reload the line into the editing buffer.

    
por 11.12.2017 / 22:32