
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, zsh assume que terminei de digitar a expansão, deixando-me com mv 'foo bar' !#:1:s^\
which yields mv 'foo bar' 'foobar'
.
Posso contornar esse comportamento digitando mv 'foo bar' !#:1:s^\^-^
e retrocedendo com as teclas de seta para obter mv 'foo bar' !#:1:s^\ ^-^
, mas isso vai contra o propósito.
Como posso simplesmente desativar o comportamento de expansão na barra de espaço? Suponho que meu comportamento desejado seja deixar o comando não expandido até pressionar Enter. Não encontrei nada sobre isso na página de manual do zshexpn
.
Editar: descobri que posso digitar mv 'foo bar' !{#:1:s^\ ^-^}
, o que atrasa a expansão até que }
seja digitado. Mas a questão de como evitar o comportamento de expansão da barra de espaço permanece.
Responder1
Parece que você vinculou a tecla de espaço a magic-space
, porque ointrodução azshexplica:
Se você vincular o espaço ao espaço mágico, a expansão do histórico no estilo csh será feita na linha sempre que você pressionar a barra de espaço.
Então, remova a linha
bindkey " " magic-space
da sua configuração. Ou (se você estiver usando alguns arquivos de configuração predefinidos comod'oh-meu-zsh) certifique-se de que o seguinte comando seja executado após todas as outras combinações de teclas:
bindkey " " self-insert