Como remapear corretamente 'del' para 'esc' no vim?

1

Sou um feliz proprietário de uma TypeMatrix 2030, bem como de um usuário feliz do vim. Neste teclado, o <del> tem um local central, enquanto o <esc> é a tecla superior esquerda, como de costume. Então, gostaria de remapear minha chave <del> para <esc> . Até agora, adicionei estas linhas ao meu .vimrc :

noremap <del> <esc>
nnoremap <del> <esc>
inoremap <del> <esc>
vnoremap <del> <esc>
xnoremap <del> <esc>
snoremap <del> <esc>
cnoremap <del> <esc>
onoremap <del> <esc>

Funciona quase perfeitamente, exceto no modo de linha de comando: digitar :cmd<del> iniciará a ajuda como :cmd<enter> , enquanto :cmd<esc> apagará a linha e retornará ao modo normal.

Aqui está a saída para :verbose cnoremap <Del> :

c  <Del>       * <Esc>>    
    Last changed in ~/.config/vim/vimrc 

A saída para outros modos dá um resultado semelhante, com a estranha dupla chevron >> , mas funciona bem (digitar no modo de inserção alternará para o modo normal).

    
por psychoslave 10.04.2014 / 09:07

1 resposta

1

Acho que esse comportamento se deve ao descrito em :help c_Esc (leia "macros" como "mapeamentos"; eles estão intimamente relacionados):

  <Esc>   When typed and 'x' not present in 'cpoptions', quit
          Command-line mode without executing.  In macros or when 'x'
          present in 'cpoptions', start entered command.

Você pode contornar isso usando <C-c> :

:cnoremap <del> <C-c>
    
por 10.04.2014 / 09:37