1

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

    noreabbrev <space><space>  .<space>

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

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

2 ответа2

1

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

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

0

Я быстро взломал это вместе. Поместите его в файл с именем 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()

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .