Como mapear as teclas PageDown e PageUp para funcionar normalmente

Como mapear as teclas PageDown e PageUp para funcionar normalmente

Quando abro um documento usando viou vim, não consigo navegar na página usando as teclas Page Upe Page Down. Ao pressionar essas teclas, o vim parece se comportar de maneira anormal e altera a caixa do caractere abaixo do cursor. Em seguida, leva alguns segundos para voltar ao insertmodo.

Por favor, deixe-me saber como mapear essas teclas, para que, ao pressioná-las, eu possa rolar as páginas suavemente, como Ctrl+ ( f/ b/ u/ d ).

Atualizar

Informações sobre máquina e Vim

$ cat /etc/*-release  
Red Hat Enterprise Linux Server release 5.5 (Tikanga)


$ vim --version
VIM - Vi IMproved 7.0 (2006 May 7, compiled Jun 12 2009 07:08:36)

Observação

Estou usando o Putty para conectar-me a esta máquina.

Responder1

Atualizar:

Estou usando o Putty para conectar-me a esta máquina

Então 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 contar 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 então passa qualquer pressionamento de tecla não acionado para o aplicativo.

O aplicativo, vim, usa uma biblioteca de sistema (acredito) para traduzir sequências de caracteres de volta em "chaves" com base no valor da variável de ambiente TERM e na entrada correspondente emterminfo

Se terminfo não definir PgUp (ou qualquer outra chave) como Escape [ 5 ~, o Vim (provavelmente) processará os quatro caracteres individualmente.

"Muitos códigos de teclas de cursor começam com Esc. O Vim deve descobrir se este é um único toque na tecla Esc ou o início de uma sequência de teclas de cursor. Ele aguarda a chegada do próximo caractere. Se não chegar dentro de um segundo um único Esc é assumido."Então o vim espera um pouco para ver se Esc você deseja sair do modo de inserção.

[e 5são comandos válidos do Vim. Mas talvez o Vim veja o Esc como sinalizando o início de uma sequência de escape que ele não reconhece - ele precisa adivinhar onde essa sequência termina e reiniciar a interpretação de caracteres como comandos ou dados a partir desse ponto.

~é um comando vim para alternar entre maiúsculas e minúsculas do caractere sob o cursor.

Um final feliz

Defina TERM corretamente (para corresponder às configurações do Putty/emulador) e certifique-se de que terminfo tenha uma definição de PgUp etc. Na terra Unix, os teclados existiam antes do IBM PC nascer, alguns deles tinham uma Previous Pagechave, então esse recurso de chave é nomeado kpp.

  $ infocmp xterm | grep kpp
    knp=\E[6~, kpp=\E[5~, kri=\E[1;2A, mc0=\E[i, mc4=\E[4i,

Pós-escrito

como mapear essas chaves

Até onde eu sei, o Putty não possui uma capacidade arbitrária de mapeamento de teclas (acho que estava na lista de desejos).

  1. Configure o Putty para emular um tipo de terminal conhecido e bem definido. Infelizmente não há nenhum, então algo como o xterm terá que servir.

  2. Certifique-se de que o Putty informe à caixa do Linux qual tipo de terminal ele está emulando. Em parte, isso ocorre definindo as configurações do Putty e, em parte, usando um protocolo que comunica TERM (por exemplo, suporte ssh do Putty) em vez de um que não o faça (suporte telnet do Putty).

  3. Certifique-se de que TERM esteja realmente definido como deveria ser ( echo $TERM).

  4. Certifique-se de que a entrada terminfo para esses valores TERM defina as chaves desejadas (veja acima).

  5. Certifique-se de que a chave PgUp envie o que deveria. No Vim, entre no modo de inserção e pressione Ctrl+ Ve depoisPgUp

Responder2

export TERM=xterm deve resolver seu problema

informação relacionada