2016-07-10 6 views
1

OriginaltextAppend Text um jede Zeile in einem Block in Vim

a = 2 
b = 33 
c = 456 

Wunsch Text

print("a = 2") 
print("b = 33") 
print("c = 456") 

Das Beispiel ist nur das gewünschte Ergebnis zu veranschaulichen; Es hat nichts mit dem Ziel meines Programms zu tun. Wie kann ich print(" an den Anfang jeder Zeile und ") an das Ende jeder Zeile anhängen? Wenn ich den visuellen Modus Ctrl-V verwende, kann ich die erste Operation ausführen, aber nicht die zweite, weil die Leitungslängen unterschiedlich sind.

+6

Markieren Sie die Zeilen (mit 'Shift-V'), dann': '<,'> s /.*/ print ("&")/'(siehe': hs/\ & ') –

+1

@SatoKatsura das ist ein toller Weg es zu tun :)! – tnabdb

+0

Markieren Sie die Zeilen (mit 'Shift-V'), dann': '<,'> g // exe "Norm! Iprint (\" \ A \ ")" ' – dNitro

Antwort

3

Sie könnten ein Makro verwenden. Setzen Sie den Cursor irgendwo in der ersten Zeile und geben

qaIprint("<esc>A")<esc>jq 

Dieser setzt sich wie folgt

qa  # start recording macro a 
I  # enter insert mode at the beginning of the line 
print(" # enter text 
<esc> # leave insert mode 
A  # enter insert mode at the end of the line 
")  # enter text 
<esc> # leave insert mode 
jq  # move to the next line and stop recording 

Sie können dann diese laufen immer wieder von @a eingeben. Wenn Sie wissen, wie viele Zeilen Sie ändern möchten, können Sie eine Anzahl anhängen. Zum Beispiel: [email protected] wird es 50 mal ausführen und die nächsten 50 Zeilen ändern.

+1

@Iwassink Perfekt! :) – tnabdb