Você deve configurar seu tipo de terminal como putty
, putty-256color
ou putty-sco
ao usar o PuTTY. Eles são os únicos tipos de terminal cujas entradas no banco de dados terminfo descrevem corretamente o PuTTY .
É uma suposição incorreta difundida de que os emuladores de terminal são todos compatíveis com o XTerm, e que as entradas xterm
e xterm-256color
no banco de dados terminfo as descrevem corretamente.
Esse pensamento errôneo é chamado em XTerm FAQ de Thomas Dickey e vale a pena observando que as entradas xterm
e xterm-256color
nem sequer descrevem todas as versões do XTerm, quanto mais outros emuladores de terminal.
O doco de PuTTY, como a página com hiperlink de M. Dickey, ainda hoje 16 anos desde que o putty
entry foi adicionado ao terminfo , infelizmente promove o uso indevido do tipo de terminal xterm
, mas é um mau uso, e esse é o tipo de mau comportamento do aplicativo que ocorre.
A comparação das entradas do banco de dados terminfo para xterm-256color
e putty-256color
revela o que está acontecendo com as chaves ⇱ Início e ⇲ Fim :
% infocmp xterm-256color putty-256color|grep -F kend kend: '\EOF', '\E[4~'. % infocmp xterm-256color putty-256color|grep -F khome khome: '\EOH', '\E[1~'. %
Como você pode ver, um aplicativo que está dizendo que está lidando com o XTerm espera receber (do terminal) a seqüência de controle ␛OH
para a chave ⇱ Início e a seqüência de controle ␛OF
para a tecla ⇲ End . Mas o PuTTY realmente envia as seqüências de controle ␛[1~
e ␛[4~
(respectivamente).
Seu aplicativo, o shell Z, esperando as seqüências de controle do teclado XTerm (porque você erroneamente disse que seu terminal tem o tipo xterm
), não reconhece as seqüências de controle do PuTTY e, de fato, divide-as em os comandos vi
-mode para sair do modo de inserção ( ␛
) e trocar o caso do caractere atual ( ~
).