Wie ändere ich einen visuell ausgewählten Block mit einem externen Befehl?

9

Ich habe eine Datei, die aus zwei vertikalen Teilen besteht. Auf der linken Seite sind die Daten bereits formatiert und ich möchte sie nicht ändern. Ich möchte nur die Daten auf der rechten Seite formatieren. Angenommen, ich habe eine Datei mit Zeilen wie

foo=bar baz     # Neato       Junk
quux=xyzzy      # Bilbo Baggins Ring

mit vielen weiteren Zeilen wie diesen. Ich möchte nur den Text rechts vom Zeichen '#' ändern. Ich habe den gewünschten Text mit den folgenden Ausdrücken ausgewählt:

gg
/#
ctrl-v
G
$

aber wenn ich dann versuche, es zu ändern (sagen wir mit :'<,'>!column -t), ändert es tatsächlich die Gesamtheit jeder Zeile. Was ist der richtige Ausdruck, um nur die visuell ausgewählten Teile zu ändern?

Kojiro
quelle
2
Sie können das vis- Plugin von Dr. Chip oder mein NrrwRgn- Plugin ausprobieren . Beide sollten gut damit umgehen.
Christian Brabandt

Antworten:

6

Sie können auch versuchen:

gg
^V
G
t#
d
:%!column -t
gg
P

Von :h :visual_example:

Derzeit funktioniert der Befehl ":" nur in ganzen Zeilen. Wenn Sie einen Teil einer Zeile auswählen, wird die gesamte Zeile durch ":! Datum" ersetzt. Wenn Sie möchten, dass nur ein Teil der Linie ersetzt wird, müssen Sie eine Zuordnung dafür vornehmen. In einer zukünftigen Version funktioniert ":" möglicherweise in Teilzeilen.

Siehe auch :h visual-operatorsfür Details.

Jair López
quelle