Resolvi o problema esta manhã, por isso estou postando esta resposta com minha correção:
Corrigir
Alterar a configuração do PuTTY Connection -> Data -> Terminal-type string
para xterm-256color
.
Explicação
Bem, eis a diferença entre os valores de terminfo para kLFT, que man terminfo
diz ser a tecla de seta para a esquerda:
$ infocmp xterm-256color putty-256color | grep '\E\[D'
kLFT: '\E[1;2D', '\E[D'
Eu acho que o Bash entende \E[D
como o comando para mover o cursor para a esquerda, então faz sentido que a shift-left-arrow funcione para mover o cursor para a esquerda. Mas não há outra entrada para \E[D
e
$ infocmp xterm-256color | grep '\E\[D'
não encontra nada, então não parece que o xterm-256color tenha vinculado mais nada a isso, e kLFT é a única correspondência em putty-256color. man terminfo
diz
The codes sent by the left arrow, right arrow, up arrow, down arrow, and home keys can be given as kcub1, kcuf1, kcuu1, kcud1, and khome respectively.
E em outros lugares lista o kcub1 como a tecla de seta para a esquerda, então eu devo procurar por kcub1:
$ infocmp xterm-256color | grep kcub1
kbs=7, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
$ infocmp putty-256color | grep kcub1
kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
Mas está definido com o mesmo valor, \EOD
, em ambos.
Na tela-256 cores, o valor de kcub1 é o mesmo e kLFT não está definido.
Além disso, eu não tenho muita explicação - se tudo isso somar e fizer sentido para você, por favor poste uma resposta.
Nota: Eu pensei que isso estava funcionando há uma semana com putty-256color, mas lembro de ter mudado algumas opções $ TERM quando eu instalei o Solarized, então eu acho que eu mudei para putty-256color naquele momento e esqueci .