Adicionando uma abreviação de espaços no vim

1

Eu estou tentando adicionar a seguinte abreviação no vim, mas não está funcionando.

    noreabbrev <space><space>  .<space>

É como na maioria dos telefones modernos.

alguém pode me dizer o que estou fazendo de errado aqui e como fazê-lo funcionar?

    
por Krishna 03.07.2014 / 14:46

2 respostas

1

Existem três tipos de abreviaturas: full-id, end-id, não-id, cada uma com condições particulares nos conjuntos de caracteres permitidos. Veja :help abbreviations . Dois espaços não são permitidos em nenhum deles.

Você tem que usar um :inoremap (e viver com o inevitável atraso com o qual o primeiro caractere de espaço aparecerá no buffer), ou construir um complexo :inoremap <expr> <Space> que verifica o caractere anterior e só então faz sua mágica.

    
por 03.07.2014 / 15:09
0

Eu rapidamente hackeei isso juntos. Coloque-o em um arquivo chamado InsertSpace.vim ou o que quer que seja, e o coloque no seu vimrc, ou coloque-o em ~/.vim/plugin/ ( ~\vimfiles\plugin no Windows):

function! s:InsertSpace()
    if getline('.')[col('.')-3:col('.')-2] =~ '[^. ]\s$'
        return "\<bs>. "
    else
        return ' '
    endif
endfunction

inoremap <expr> <space> <SID>InsertSpace()

Isso não será perfeito, mas pode ser refinado.

    
por 03.07.2014 / 23:37