Vim: comportamento estranho de “\” no modo de inserção

0

Estou editando muitos arquivos tex usando o vim e, portanto, uso muito o caracter \ . No entanto, ao inserir um \ no modo de inserção, o vim pausa o cursor no mesmo ponto por um segundo, diferentemente de qualquer outro caractere.

Claro que não preciso esperar fisicamente por um segundo inteiro, posso continuar digitando, mas o texto só é inserido após esse segundo.

Descobri que posso criar um comportamento semelhante mapeando, por exemplo:

inoremap ;; <esc>:
inoremap jj <esc>

Parece que o vim está esperando que outro personagem siga, para que ele possa avaliar o mapa.

Desafiando \ , pois o mapleader não alivia o problema, que é o que eu esperava.

Além disso, não sei se isso está relacionado, mas usar <esc> no modo de inserção não funciona instantaneamente (novamente porque o vim espera que algo venha depois).

Existe uma configuração de vim que me permite colocar o tempo de colagem em 0, mas eu ainda quero poder usar meus mapeamentos ;; , jj e <esc> .

Eu sei sobre timeout , mas isso não ajuda. Se eu fizer timeoutlen=0 , nenhum dos mapeamentos de várias teclas seria utilizável.

    
por romeovs 06.11.2011 / 20:54

2 respostas

0

Você identificou o problema: \ está sendo usado como o primeiro caractere de um imap. Para descobrir onde está sendo definido, você pode executar

:verbose imap \

Eu não tenho outra solução senão eliminar o mapeamento ou desmapear quando você estiver editando arquivos TeX. Você pode fazer isso colocando uma linha como essa em um arquivo chamado ~ / .vim / after / ftplugin / tex.vim no Unix ou ~ \ vimfiles \ após \ ftplugin \ tex.vim no Windows:

silent! iunmap \x

onde você substituiria x pela parte correspondente do mapeamento incorreto.

Eu uso o LaTeX um pouco, tenho o Vim-LaTeX-Suite instalado e não vejo esse comportamento, então pelo menos não é um problema com esse conjunto.

    
por 06.11.2011 / 22:03
0

Parece que você tem um mapeamento de modo de inserção começando com "\", possivelmente definido por um plug-in que você instalou recentemente. Para descobrir se você faz e qual arquivo criou o (s) mapeamento (s), execute este comando:

:verbose imap \
    
por 06.11.2011 / 22:02

Tags