Agregar una abreviatura para espacios en vim

Agregar una abreviatura para espacios en vim

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.vimo lo que sea y obtengalo de su vimrc o colóquelo en ~/.vim/plugin/( ~\vimfiles\pluginen 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.

información relacionada