Ich möchte *am Ende jeder Zeile in Vim hinzufügen .
Ich habe den Code erfolglos ausprobiert
:%s/\n/*\n/g
Ich möchte *am Ende jeder Zeile in Vim hinzufügen .
Ich habe den Code erfolglos ausprobiert
:%s/\n/*\n/g
Antworten:
:%s/$/\*/g
sollte arbeiten. So sollte es auch sein, :%s/$/*/gwie MrWiggles richtig hervorhebt .
gFlag nicht erforderlich.
Noch kürzer als der Befehl: search:
:%norm A*
Das bedeutet es:
% = for every line
norm = type the following commands
A* = append '*' to the end of current line
I*anstatt 0i*Ihnen einen Tastendruck zu ersparen.
:, dies wird den Befehl vorab ausfüllen, mit :'<,'>dem Sie dann:'<,'>norm A*
Istattdessen -:%norm I*
Ebenfalls:
:g/$/norm A*
Ebenfalls:
gg<Ctrl-v>G$A*<Esc>
gist ein globalBefehl, der mit jeder übereinstimmenden Zeile etwas macht. $passt zu jeder Zeile. Es könnte auch ^oder sein .*. norm führt Befehle aus, die Sie normalerweise im Befehlsmodus verwenden. So A*Mittel anhängen *an das Ende der Zeile.
Ich denke, die Verwendung des visuellen Blockmodus ist eine bessere und vielseitigere Methode, um mit solchen Dingen umzugehen. Hier ist ein Beispiel:
This is the First line.
This is the second.
The third.
So fügen Sie "Hallo Welt" ein. (Leerzeichen + Zwischenablage) am Ende jeder dieser Zeilen:
Das Ergebnis ist:
This is the First line. Hello world.
This is the second. Hello world.
The third. Hello world.
(Beispiel von Vim.Wikia.com )
jj, kann man drücken G, um zur letzten Zeile zu gelangen. Dies ist nützlich in großen Dateien, in denen das Drücken jbis zum Erreichen der letzten Zeile nicht praktikabel ist.
Wenn Sie Hello world am Ende jeder Zeile hinzufügen möchten:
:%s/$/HelloWorld/
Wenn Sie dies für eine bestimmte Anzahl von Zeilen tun möchten, verwenden Sie beispielsweise 20 bis 30:
:20,30s/$/HelloWorld/
Wenn Sie dies am Anfang jeder Zeile tun möchten, verwenden Sie:
:20,30s/^/HelloWorld/
Das brauchst du gam Ende nicht wirklich . So wird es:
:%s/$/*
Oder wenn Sie nur das *am Ende von möchten , sagen Sie die Zeilen 14-18:
:14,18s/$/*
oder
:14,18norm A*
... und jede Zeile mit * voranstellen (den Anfang hinzufügen),
%s/^/*/g
Eine Option ist:
:g/$/s//*
Dadurch wird jeder Linienendanker gefunden und durch ersetzt *. Ich sage "Ersatz", aber in Wirklichkeit ist es eher ein Anhang, da der Anker eher eine besondere Sache als ein normaler Charakter ist. Weitere Informationen finden Sie unter Potenz von g - Beispiele .
:% s / \ n / * \ r / g
Ihre erste ist irgendwo anders richtig, aber Vim muss aus irgendeinem Grund eine andere Newline-Behandlung haben.
:s///,\neinem Nullzeichen entspricht. Der Abschnitt:help sub-replace-specialist relevant.