Wie blockiere ich Ersetzungscode im visuellen Modus?

26

Ich habe eine Liste von Elementen, bei denen ich die ersten beiden Zeichen ersetzen möchte:

a) item 1
b) item 2
c) item 3

Was ist der schnellste Weg, um dies zu tun:

* item 1
* item 2
* item 3

Ich habe einen Ansatz mit visuellem Modus (Strg-V, JJJ, muss aber zwei Ersetzungsbefehle ausführen. Iirc, dieser Ersetzungsvorgang kann mit 1 Befehl ausgeführt werden.)

poseid
quelle
1
Wie .,.+2s/^../*/(oder gleichwertig in einer visuellen Auswahl)? Warum zwei Ersetzungsbefehle? 2cwürde zwei Zeichen ersetzen.
muru
manchmal wird nur die erste Zeile in der visuellen Auswahl geändert und dann mit wiederholt. denn die anderen Zeilen bringen die Dinge durcheinander.
Poseid
2
@poseid hast du die gewohnheit zu drücken Ctrl-Cstatt Esc? Dies verhindert unter anderem, dass Änderungen auf jede Zeile einer Visual-Block-Auswahl angewendet werden.
tommcdo
das könnte der Hauptgrund für Verwirrung sein! Vielen Dank!
Poseid

Antworten:

26

Visuelle Blockauswahl:

<C-v>
jjl
c*
<Esc>

:normal:

:,+2norm! cE*

Auswechslung:

:,+2s/^.\{2}/*

Punktformel:

cE*<Esc>
j.
j.
romainl
quelle
1
Verrückter Ansatz: Mit textobj-word-column.vim können Sie tun ciC*<esc>und getan werden. Hinweis: Dieses Plugin ist ein "do what i mean" -Plugin, sodass es an unerwarteten Orten und auf unerwartete Weise fehlschlägt. In einigen einfachen Fällen wie diesem ist das Plugin jedoch immer noch nützlich.
Peter Rincker
Interessant die Normal- und Punktformel!
Poseid
3
Beachten Sie, dass für die Visual-Block-Lösung nur Text in der ersten Zeile eingegeben wird. Sobald Sie drücken <Esc>, werden die verbleibenden Zeilen ausgefüllt.
tommcdo
Irgendwelche Vorschläge für einen Weg, sich daran zu erinnern, dass c ersetzen wird? Wie Strg + D (eigene)
Jordan Mackie
2
@JordanMackie cist für "Veränderung".
Romainl
17

Hier ist eine effizientere Möglichkeit, dies zu tun:

  1. Wenn Sie den Cursor auf das erste Element und den ersten Buchstaben ( 0) setzen, rufen Sie den visuellen Modus "Blockweise" Ctrl+ auf vund wählen Sie die erste Spalte Ihres aktuellen Absatzes mit }(wenn Ihre Liste durch eine neue Zeile abgeschlossen ist). Andernfalls verwenden Sie andere Methoden wie Pfeiltasten (zum Verschieben) um die Auswahl), oder Mustersuche, /c)wo cist Ihr letztes Element).
  2. Bewegen Sie sich mit kund l(oder mit den Pfeiltasten ) zum letzten Symbol Ihrer Liste , um zwei Spalten auszuwählen, die Sie ändern möchten.
  3. Ändern Sie den ausgewählten Text, indem Sie drücken cund Ihr Aufzählungszeichen ( *) eingeben, und beenden Sie den Vorgang, indem Sie auf tippen Esc.

Arbeitet effizienter, insbesondere in längeren Listen.

Kenorb
quelle