Добавление сокращения для пробелов в vim

Добавление сокращения для пробелов в vim

Я пытаюсь добавить следующую аббревиатуру в vim, но она не работает.

    noreabbrev <space><space>  .<space>

Такая же клавиатура, как и в большинстве современных телефонов.

так может кто-нибудь сказать мне, что я делаю не так и как заставить это работать?

решение1

Существует три типа сокращений: full-id, end-id, non-id, каждое из которых имеет определенные условия для наборов разрешенных символов. См. :help abbreviations. Два пробела не допускаются ни в одном из них.

Вам придется использовать :inoremap(и смириться с неизбежной задержкой, с которой первый символ пробела появится в буфере), или построить комплекс :inoremap <expr> <Space>, который проверяет предыдущий символ и только потом творит свое волшебство.

решение2

Я быстро это соорудил. Поместите его в файл с именем InsertSpace.vimили как-то так и либо возьмите его из vimrc, либо поместите его в ~/.vim/plugin/( ~\vimfiles\pluginв Windows):

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

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

Это не будет идеально, но это можно улучшить.

Связанный контент