Por que meu mapeamento do C-PageX para: bY não funciona no gvim?

0

No meu arquivo .vimrc , tenho as duas linhas a seguir:

noremap! <C-PageDown> :bnext <CR>
noremap! <C-PageUp>   :bprev <CR>

mas eles não funcionam! No modo de inserção, digitando

<C-v><C-PageDown>

retorna

<C-PageDown>

(literalmente) e da mesma forma para <C-PageUp> e se eu tentar executar o comando obtenho

:bnext

(mais uma nova linha). No modo normal não há efeito. Assim, eu sei que o mapa de chaves não está sendo devorado por X ou meu shell, mas o que mais poderia ser o problema? Outros mapas principais funcionam bem.

    
por gvkv 27.09.2010 / 01:11

3 respostas

2

Resolvido!

noremap  <C-PageDown>           :bnext <CR>
noremap  <C-PageUp>             :bprev <CR>
inoremap <C_PageDown> <C-\><C-O>:bnext <CR>
inoremap <C_PageUp>   <C-\><C-O>:bprev <CR>

No modo de inserção, qualquer coisa no RHS do mapeamento de chave é inserido literalmente, então precisamos usar <C-O> , que entra no modo normal para um único comando. O <C-\> impede que o cursor se mova para a esquerda, o que ocorre quando invocando <C-O> no final de uma linha.

Observe também que você não pode ter um espaço entre <C-O> e :bnext else, ele será comido por <C-O> .

    
por 27.09.2010 / 14:06
0

Poderia ser, porque essas chaves já são usadas pelo vim para alternar as guias? Veja a descrição na documentação do vims

    
por 27.09.2010 / 08:45
0

O n em: noremap é para o modo normal, por isso não funcionará no modo de inserção. Se você quiser que ele funcione no modo de inserção, use: imap. Se você estava tentando usar o < C-V > para que funcione no modo de inserção, acho que você estava procurando por < C-O >.

    
por 27.09.2010 / 10:58

Tags