Estou tentando adicionar a seguinte abreviatura no vim, mas não está funcionando.
noreabbrev <space><space> .<space>
É exatamente como o teclado da maioria dos telefones modernos.
então alguém pode me dizer o que estou fazendo de errado aqui e como fazer funcionar?
Responder1
Existem três tipos de abreviaturas: full-id, end-id, non-id, cada uma com condições específicas sobre os conjuntos de caracteres permitidos. Ver :help abbreviations
. Não são permitidos dois espaços em nenhum deles.
Você tem que usar um :inoremap
(e conviver com o inevitável atraso com que o primeiro caractere de espaço aparecerá no buffer), ou construir um complexo :inoremap <expr> <Space>
que verifique o caractere anterior e só então faça sua mágica.
Responder2
Eu rapidamente hackeei isso juntos. Coloque-o em um arquivo chamado InsertSpace.vim
ou qualquer outra coisa e obtenha-o do 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.