A interface entre o terminal e o aplicativo envia bytes, não chaves. Os caracteres imprimíveis são interpretados como a sequência de bytes correspondente à codificação de caracteres do terminal. Teclas de função são codificadas como seqüências de escape. Existem convenções comuns para essas sequências de escape, mas elas não são completamente padronizadas.
Para informações mais gerais, consulte Como fazer entrada de teclado e trabalho de saída de texto? . Para obter mais informações, consulte também Existe alguma razão pela qual eu recebo ^ [[A quando eu pressiono a seta para cima na tela de login do console? e tabela de vinculações de teclas?
Todas as seqüências de escape da tecla de função começam com o caractere de escape e a maioria delas termina com ~
. O Vim reconhece um número de seqüências de escape com base em suas configurações de tempo de compilação e as informações que ele tem no terminal. Se o Vim não reconhecer uma sequência de escape, ele a ignora, mas o Vim não sabe quanto tempo a sequência de escape é (não assume que o último caractere seja um ~
, nem sempre é o caso) . Muitas vezes, há um ~
perdido após a parte que o Vim reconhece, às vezes mais.
Você pode ver exatamente o que o terminal envia pressionando Ctrl + V primeiro, em um shell ou no modo de inserção do Vim.
Você pode informar ao Vim sobre a tecla de função correspondente a uma seqüência de escape com :set
, por exemplo
:set <S-F8>=^[[19;2~
(substitua a peça após ^[
pelo que o seu terminal realmente envia).