Eu suponho que você esteja executando o vim em um terminal em vez da versão da GUI, gvim.
Diferentes terminais enviam diferentes caracteres ou sequências de caracteres para os aplicativos executados neles quando o usuário digita uma tecla de movimento, como PageDown. Para determinar o conjunto de caracteres ou seqüências de caracteres que o terminal atual está enviando para representar essas chaves, o Vim consulta o banco de dados terminfo. Ele usa a variável de ambiente TERM para determinar o tipo do terminal atual, depois acessa as definições terminográficas das chaves usadas por esse terminal.
Se as definições de chave para o valor atual de TERM corresponderem aos recursos do seu terminal atual, tudo funcionará bem. Se o valor de TERM estiver incorreto para o seu terminal, ou se o banco de dados terminfo estiver incompleto ou faltando, o Vim não saberá interpretar os caracteres ou seqüências de caracteres enviados pelo seu terminal para que ele simplesmente insira os caracteres em seu texto ou interprete-os como comandos do Vim.
A causa mais provável do problema é que o TERM não está configurado corretamente para o terminal que você está usando. A solução mais simples é descobrir que tipo de terminal você está usando, encontrar o nome terminfo para ele em / usr / share / terminfo ou / usr / lib / terminfo e colocar uma linha como essa em seu arquivo ~ / .bashrc:
export TERM=thetermifoname
Por exemplo,
export TERM=xterm