O zsh usa modo canônico para o terminal?

O zsh usa modo canônico para o terminal?

Eu tenho explorado terminfoe stty. Se eu executar, stty -a|grep icanonparece que o modo canônico está definido, mas se eu tentar desligá-lo stty -icanone verificar novamente, vejo que ainda está definido. Quando faço a mesma coisa no bash, consigo desabilitar o icanon, mas não noto nenhuma mudança no comportamento. Então eu tenho 2 perguntas; por que não consigo desativar o icanon no zsh e como isso afetaria o comportamento, se pudesse?

Responder1

Quando faço a mesma coisa no bash, consigo desabilitar o icanon, mas não noto nenhuma mudança no comportamento.

Isso porque o bash ativa o modo canônicodesligadoao ler comandos do usuário (para poder implementar recursos de edição de linha não oferecidos pelo driver do terminal - como inserir texto, mover o cursor para a esquerda e para a direita com as teclas de seta, etc.), e entãorestauraas configurações anteriores do terminal ao executar qualquer linha de comando.

Para ver seu efeito, execute um comando externo como cat:

bash$ stty -icanon
bash$ cat
hheelloo

Cada chave será repetida, uma vez porque stty echoestá ativada e uma vez porque catirá lê-la e escrevê-la imediatamente, em vez de ter que esperar pelas linhas completas.

[com zsh] se eu tentar desligá-lo stty -icanone verificar novamente, vejo que ainda está configurado.

Ao restaurar as configurações anteriores do terminal conforme descrito acima, zshtambém está aplicandoalguns padrões sensatos(que incluem as configurações echoe icanon). Provavelmente é porque assume que, se um comando sair do modo canônicodesligadoao encerrar, foi apenas um acidente (por exemplo, quando um aplicativo em tela cheia travou viou lesstravou).

Não consegui encontrar nenhuma zshopção que fizesse funcionar como bash(e como qualquer outro programa usando a biblioteca readline), mas se você quiser desligar o modo icanon antes de executar um comando, você pode fazer isso chamando stty de a mesma linha de comando:

zsh$ stty -icanon; cat
hheelloo

informação relacionada