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/$/*/g
wie MrWiggles richtig hervorhebt .
g
Flag 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*
I
stattdessen -:%norm I*
Ebenfalls:
:g/$/norm A*
Ebenfalls:
gg<Ctrl-v>G$A*<Esc>
g
ist ein global
Befehl, 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 j
bis 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 g
am 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///
,\n
einem Nullzeichen entspricht. Der Abschnitt:help sub-replace-special
ist relevant.