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.)


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.

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.