Alguns caracteres em zsh não são exibidos até que a chave seja liberada

1

Ao introduzir caracteres específicos no shell zsh (no meu caso e e;) eles não aparecem imediatamente após pressionar a tecla. Em vez disso, eles só aparecem um pouco depois de liberar a chave. Quando estas teclas são mantidas pressionadas, elas não aparecem enquanto a tecla estiver pressionada, mas novamente aparecem apenas um pouco depois de serem liberadas. Todas as outras teclas aparecem imediatamente após pressionar a tecla e também aparecem continuamente enquanto a mantém pressionada. Se eu, em vez disso, executar o bash no meu emulador de terminal, o problema desapareceu. Não consigo encontrar nada sobre isso e achei que poderia estar perdendo algo óbvio. Qualquer ajuda é apreciada.

    
por Robin Klusman 10.04.2015 / 12:01

1 resposta

0

Se você definir uma associação de teclas que consista em vários caracteres, por exemplo,

bindkey 'foo' some_zle_widget

zsh tem que esperar até ficar claro que você não quer digitar essa ligação de chave. No exemplo acima, o toque da tecla f será atrasado por algum tempo. O atraso continuará se você pressionar o , mas será abortado se você pressionar uma tecla diferente de o .

Portanto, para diminuir esse problema, comece com um shell clean , ou seja, sem carregar os arquivos de configuração usuais emitindo zsh -f . A questão deve desaparecer agora (como você confirmou nos comentários).

Em seguida, verifique especialmente o arquivo ~/.zshrc , mas também algumas configurações do sistema em /etc , para instruções ofensivas bindkey .

E finalmente, conforme você escreve nos comentários que deseja vincular a CTRL + & leftarrow; , construa a linha correta. Para fazer isso, você precisa do código que seu terminal envia pressionando essa combinação de teclas. Você pode usar, por exemplo, CTRL + v CTRL + & leftarrow; , porque CTRL + v muda zsh para algum tipo de modo literal para o próximo pressionamento de tecla. +

Em xterm você recebe ^[[1;5D , então o comando bindkey correto será

bindkey '^[[1;5D' backward-word

Por favor, note que estas combinações de teclas são realmente diferentes para terminais diferentes!

+ Se não estiver funcionando, emita o bindkey -e de antemão.

    
por 14.04.2015 / 22:26