Hinzufügen einer Abkürzung für Leerzeichen in vim

1

Ich versuche, die folgende Abkürzung in vim hinzuzufügen, aber es funktioniert nicht.

    noreabbrev <space><space>  .<space>

Es ist genau wie bei den meisten modernen Telefontastaturen.

Kann mir jemand sagen, was ich hier falsch mache und wie es funktioniert?

Krishna
quelle

Antworten:

1

Es gibt drei Arten von Abkürzungen: vollständige ID, End-ID, Nicht-ID, jeweils mit bestimmten Bedingungen für die Menge der zulässigen Zeichen. Sehen :help abbreviations. In keinem von ihnen sind zwei Leerzeichen erlaubt.

Sie müssen ein verwenden :inoremap(und mit der unvermeidlichen Verzögerung leben, mit der das erste Leerzeichen im Puffer erscheint) oder einen Komplex erstellen :inoremap <expr> <Space>, der das vorherige Zeichen überprüft und erst dann seine Magie ausführt.

Ingo Karkat
quelle
0

Ich habe das schnell zusammen gehackt. Legen Sie es in eine Datei mit dem Namen InsertSpace.vimoder was auch immer und geben Sie es entweder von Ihrem vimrc aus an, oder platzieren Sie es in ~/.vim/plugin/( ~\vimfiles\pluginunter Windows):

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

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

Dies wird nicht perfekt sein, aber es kann verfeinert werden.

Heptit
quelle