reinicializa o terminal via atalho de teclado (sem a tecla enter)

1

Isso deve ser fácil, certo?

Em zsh , por exemplo, você poderia colocar isso no seu .zshrc :

reset_widget() tput reset
zle -N reset_widget
bindkey "^L" reset_widget

No entanto, isso redefine o terminal, mas exige que você pressione a tecla enter para exibir o prompt novamente.

Alterar o comando para echo -ne '\n' | tput reset também não tem efeito.

Existe uma maneira de redefinir o terminal usando um atalho de teclado, sem ter que pressionar a tecla enter depois para mostrar o prompt?

    
por nbubis 14.11.2016 / 15:07

1 resposta

2
O

thrig não está vendo isto porque o ato de resetar o terminal xyr está causando um sinal WINCH ou algo assim, o que faz com que o ZLE reexiba o (s) prompt (s).

Ele faz no terminal que eu estou digitando no momento, também. A cadeia de reset do terminal emitida por tput reset inclui a sequência de controle DECCOLM. Isso redefine o terminal, do modo de 100 colunas que eu coloquei, de volta ao modo de 80 colunas. Na primeira vez, isso causa um sinal WINCH porque o terminal é redimensionado. O tempo segundo muda de 80 colunas para 80 colunas, o que não causa WINCH . Então eu só vejo o comportamento do thrig uma vez no meu terminal.

Você não está vendo isso porque isso não acontece com o seu terminal e você omitiu dizendo ao ZLE que ele precisa reexibir o (s) prompt (s) como parte do widget:

reset_widget() { tput reset; builtin zle .redisplay; }
    
por 14.11.2016 / 19:45