Como evitar que o zsh se expanda no histórico quando a barra de espaço é pressionada?

3

Eu gostaria de usar a expansão mv 'foo bar' !#:1:s^\ ^-^ para produzir o comando mv 'foo bar' 'foo-bar' . No entanto, quando pressiono a barra de espaço, o zsh assume que terminei de digitar a expansão, deixando-me com mv 'foo bar' !#:1:s^\ , o que gera mv 'foo bar' 'foobar' .

Eu posso contornar esse comportamento digitando mv 'foo bar' !#:1:s^\^-^ e, em seguida, retrocedendo com as teclas de seta para obter mv 'foo bar' !#:1:s^\ ^-^ , mas isso anula o propósito.

Como posso simplesmente desativar o comportamento de expandir a barra de espaço? Suponho que meu comportamento desejado seja deixar o comando não expandido até pressionar Enter. Eu não encontrei nada sobre isso na manpage para zshexpn .

Editar: descobri que posso digitar mv 'foo bar' !{#:1:s^\ ^-^} , o que retém a expansão até que } seja digitado. Mas a questão de como evitar o comportamento de expandir a barra de espaço é válida.

    
por shadowtalker 10.06.2015 / 18:25

1 resposta

3

Parece que você ligou a chave de espaço a magic-space , porque a introdução a zsh explica:

If you bind space to magic-space, then csh-style history expansion is done on the line whenever you press the space bar.

Então, remova a linha

bindkey " " magic-space

da sua configuração. Ou (se você estiver usando alguns arquivos de configuração pré-definidos como d'oh-my-zsh ), certifique-se de que o seguinte comando seja executado após todas as outras combinações de teclas:

bindkey " " self-insert
    
por 10.06.2015 / 21:24