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

598
Krishna

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

 noreabbrev <space><space> .<space> 

Es ist wie bei den meisten modernen Telefontasten.

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

1

2 Antworten auf die Frage

1
Ingo Karkat

Es gibt drei Arten von Abkürzungen: Voll-ID, End-ID, Nicht-ID, wobei jeweils bestimmte Bedingungen für die Menge der zulässigen Zeichen gelten. Siehe :help abbreviations. Zwei Felder sind in keinem von ihnen 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 den vorherigen Charakter prüft und erst dann seine Magie ausübt.

0
Heptite

Ich habe das schnell zusammen gehackt. Legen Sie es in einer Datei namens InsertSpace.vimoder wie auch immer ab und beziehen Sie es entweder von Ihrem vimrc 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() 

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