2017-12-30 13 views
0

Ein Wort muss zu Beginn jeder line 1 injiziert werden. Ich habe versucht, die folgenden, aber offensichtlich funktioniert es nicht :g/^=/+1i/myword/In Vim, wie ein Wort nach der Regex-Übereinstimmung am Anfang der nächsten Zeile eingefügt werden

Dateistruktur:

=============== 
line 1 
line 2 
... 
=============== 
line 1 
line 2 
... 
+0

Ist "ed" für diese Frage relevant? – hnefatl

+0

Ich war unter dem Eindruck Ed-Befehle sind eine Teilmenge von vim und meine Frage bezieht sich darauf wegen der relativen Adresse Teil (+1 Zeile) – user1602

Antwort

4

Sie sind fast da:

:g/^=/+1normal Imyword 

Beachten Sie, dass +1-+ und :normal zu :norm verkürzt werden :

:g/^=/+norm Imyword 

Siehe :help :insert für, warum Ihre Methode nicht funktionieren konnte und :help :normal.

+0

Ich bin auch ein großer Fan von ': put' und und der Ausdruck registrieren. z.B. ': g/^ =/pu = 'mein Wort' –

3

Sie können auch durch :s Kommando aus:

:%s/=\n\zs/myword 

\zs zeigt, dass Muster vorhergehenden Null-Breite, die nur als Anpassungsbedingung verwendet wird, und werden nicht eingefangen werden.

Verwandte Themen