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

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

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

    noreabbrev <space><space>  .<space>

Es ist wie die Tastatur der meisten modernen Telefone.

kann mir also jemand sagen, was ich hier falsch mache und wie ich es zum Laufen bringe??

Antwort1

Es gibt drei Arten von Abkürzungen: vollständige ID, End-ID und Nicht-ID. Jede dieser Arten hat bestimmte Bedingungen hinsichtlich der zulässigen Zeichensätze. Siehe :help abbreviations. In keiner dieser Arten sind zwei Leerzeichen zulässig.

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 entfaltet.

Antwort2

Ich habe das hier schnell zusammengehackt. Packen Sie es in eine Datei namens InsertSpace.vimoder was auch immer und beziehen Sie es entweder aus Ihrer vimrc oder platzieren Sie es hier ~/.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()

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

verwandte Informationen