Estoy intentando agregar la siguiente abreviatura en vim, pero no funciona.
noreabbrev <space><space> .<space>
Es como el teclado de la mayoría de los teléfonos modernos.
Entonces, ¿alguien puede decirme qué estoy haciendo mal aquí y cómo hacerlo funcionar?
Respuesta1
Hay tres tipos de abreviaturas: full-id, end-id, non-id, cada una con condiciones particulares sobre los conjuntos de caracteres permitidos. Ver :help abbreviations
. En ninguno de ellos se permiten dos espacios.
Tienes que usar un :inoremap
(y vivir con el inevitable retraso con el que aparecerá el primer carácter espacial en el búfer), o construir un complejo :inoremap <expr> <Space>
que controle el carácter anterior y solo entonces haga su magia.
Respuesta2
Rápidamente hackeé esto juntos. Colóquelo en un archivo llamado InsertSpace.vim
o lo que sea y obtengalo de su vimrc o colóquelo en ~/.vim/plugin/
( ~\vimfiles\plugin
en Windows):
function! s:InsertSpace()
if getline('.')[col('.')-3:col('.')-2] =~ '[^. ]\s$'
return "\<bs>. "
else
return ' '
endif
endfunction
inoremap <expr> <space> <SID>InsertSpace()
Esto no será perfecto, pero se puede perfeccionar.