Atualização:
I am using Putty to connect to this machine
Então eu adivinhei corretamente e minha resposta abaixo provavelmente se aplica.
Resposta original:
Não há informações suficientes em sua pergunta para ter certeza do seu problema, enquanto esperamos, deixe-me fornecer ao público uma pequena história:
O emulador de terminal e o editor
Se você acessar um computador Linux usando um emulador xterm como o Putty, sua chave PgUp enviará quatro caracteres Escape
[
5
~
para o sistema Linux.
O sistema Linux processa isso e, em seguida, transmite qualquer pressionamento de tecla não aplicado ao aplicativo.
O aplicativo, vim, usa uma biblioteca do sistema (acredito) para traduzir as seqüências de caracteres de volta para "chaves" com base no valor da variável de ambiente TERM e a entrada correspondente em terminfo
Se o terminfo não definir o PgUp (ou qualquer outra chave) como Escape
[
5
~
, o Vim processará (provavelmente) os quatro caracteres individualmente.
"Muitos códigos de teclas do cursor começam com um Esc. O Vim deve descobrir se este é um único hit da tecla Esc ou o início de uma seqüência de teclas do cursor. Espera para um próximo personagem chegar. Se não chegar dentro de um segundo a Esc Esc single é assumido. " Assim, o vim espera um pouco para ver se Esc está querendo sair do modo de inserção.
[
e 5
são comandos válidos do Vim. Mas talvez Vim veja o Esc como sinalizando o início de uma seqüência de escape que ele não reconhece - ele tem que adivinhar onde essa sequência termina e reiniciar interpretando os caracteres como comandos ou dados daquele ponto.
~
é um comando vim para alternar o caractere do caractere sob o cursor.
Um final feliz
Defina TERM corretamente (para corresponder às configurações de Putty / emulador) e assegure que o terminfo tenha uma definição de PgUp etc. No Unix-land, os teclados existiam antes do IBM PC nascer, alguns deles tinham uma
kbd> key, então este recurso de chave é chamado de kpp
.
$ infocmp xterm | grep kpp
knp=\E[6~, kpp=\E[5~, kri=\E[1;2A, mc0=\E[i, mc4=\E[4i,
Postscript
how to map these keys
Putty não tem um recurso de mapeamento de chave arbitrário, até onde eu sei (acho que estava na lista de desejos) Então ...
-
Configure o Putty para emular um tipo de terminal bem conhecido e bem definido. Infelizmente não há algo que o xterm tenha que fazer.
-
Garanta que o Putty informe à caixa do Linux qual tipo de terminal ele está emulando. Em parte, isso é definir as configurações do Putty e, em parte, usar um protocolo que comunique o TERM (por exemplo, o suporte ao ssh do Putty) em vez de um que não o faça (suporte do Telnet do Putty).
-
Assegure-se de que TERM esteja definido como deveria (
echo $TERM
). -
Certifique-se de que a entrada terminfo para os valores TERM define as chaves desejadas (veja acima).
-
Certifique-se de que a chave PgUp envie o que deveria. No Vim, entre no modo de inserção e pressione Ctrl + V e depois em PgUp