2017-06-29 1 views
0

Ich habe folgende einfachen Text:Enclose Linien in Marker mit regex in Gvim

one 
a line 
more lines 
more text 
end 

Ich mag jede Zeile in einzuschließen >> und < < regex. Folgende Arbeiten einzeln:

:%s/^/>>/g 
:%s/$/<</g 

Aber wie kann ich es mit einem Befehl tun. Ich habe versucht, aber sie funktionieren nicht:

:%s/^([.]+)$/>>\1<</g 
:%s/\v^([.]+)$/>>\1<</g 
:%s/([.]+)/>>\1<</g 

Vielen Dank für Ihre Hilfe.

+0

Verwenden Sie ein Makro, um das auf jeder Zeile anzuwenden? – Atri

Antwort

2

Versuchen Sie, die mit folgenden:

:%s/^\(.*\)$/>>\1<</g 

Ich bemerke ein Problem mit Ihrem aktuellen Versuch, zum Beispiel dieses:

:%s/^([.]+)$/>>\1<</g 

Sie sind ein wörtlichen Punkt passend, wenn Sie [.] verwenden, das ist, eine Zeichenklasse. Zweifellos wird dieses Muster meistens keiner Linie entsprechen, es sei denn, es besteht nur aus Punkten.

Außerdem müssen Klammern in Vim-Regexes maskiert werden.

Lesen Sie this excellent SO question and answer für weitere Informationen.

+0

Ja, das Vermeiden von [] funktioniert. Vielen Dank. – rnso

3
:%s/.*/>>&<</ 

& mittlere matched whole part. Und nicht g Flag erfordern.