Ersetzen Sie Text im Visual-Block-Modus

10

Vielleicht suche ich falsch, aber ich habe nicht herausgefunden, wie das geht.

Hier ist das Szenario: Ich habe eine Liste in einer Textdatei, in der ich dasselbe Wort in mehrere Zeilen einfügen möchte. Hier ist ein Beispieltext:

12.1 Punkt1
12.2 Punkt2
12.3 Punkt3

Jetzt markiere ich die 8. Spalte, die unten mit Unterstrichen gekennzeichnet ist, visuell und beabsichtige, einen Teil des Leerzeichens durch zu ersetzen, Doneohne die Elementspalte zu verschieben:

12.1 _ Item1
12.2 _ Item2
12.3 _ Item3

Ich habe erwartet, dass ich in den Ersetzungsmodus wechseln kann, aber ich kann nur insert ( I), append ( A) oder change-mode ( c) aufrufen . Der Änderungsmodus kommt dem nahe, was ich will: Wenn ich die Länge des Wortes kenne, kann der Block auf die gleiche Breite eingestellt werden.

Fehlt mir hier etwas?

Thor
quelle

Antworten:

18

Warum wählst du nicht 4 Spalten aus und drückst c?

<C-v>
2j
3l
cDone
<Esc>

Sie können auch Folgendes verwenden :h normal:

V
2j
:'<,'>norm 7lRDone
<Esc>
romainl
quelle
1
Das funktioniert Done, aber wenn ich etwas anderes schreiben möchte, möchte ich, wenn möglich, keine Zeichen zählen.
Thor
1
:normist dann dein Freund.
Romainl
Ja, die zweite Lösung kann für eine bequeme Zuordnung verwendet werden. Vielen Dank.
Thor
1

Wenn Sie innerhalb eines visuellen Blocks ersetzen möchten, können Sie das vis.vimPlugin verwenden .

http://vim.wikia.com/wiki/Applying_substitutes_to_a_visual_block

Installieren:

Laden Sie vis.vba.gz von http://www.drchip.org/astronaut/vim/index.html#VIS herunter

# Open vis.vba.gz in Vim 7.1 or later.
vim vis.vba.gz

# Source the open file.
:so %

# Quit Vim
:q

Einmal installiert:

ctrl-v to enter visual-block mode
Move to select the block you want
:B s/pattern/newtext/

Noch besser ist, dass Sie einen beliebigen Ex-Befehl für den visuellen Block ausführen können, nicht nur Ersetzungen. Zum Beispiel :B !sort.

Christian Long
quelle
Schönes Plugin, ich werde es benutzen :-). Aber wie kann ich damit beliebige Spalten ersetzen?
Thor
Richtig, Sie haben immer noch das Problem, die visuelle Blockbreite schnell so einzustellen, dass sie Ihren Spalten beliebiger Breite entspricht. Normalerweise mache ich <count> woder eum schnell mehrere Spalten auszuwählen und dann mit hoder anzupassen l.
Christian Long