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 ( ~ ).