
Wie kann ich Vim so konfigurieren, dass, wenn ich ein Mitglied eines passenden HTML-Tag-Paares ändere, das andere automatisch entsprechend geändert wird?
Beispiel: Bei möchte ich in <span>content</span>
ändern , und dann ändert sich das Schließen automatisch in . Optimalerweise würde dies beim Zurückkehren vom Einfügemodus in den Normalmodus passieren, es wäre aber auch OK, wenn ich hierfür eine spezielle Tastenkombination drücken müsste.<span>
<div>
</span>
</div>
Antwort1
Das ausgezeichneteumgeben.vimmacht dies ganz einfach: Setzen Sie den Cursor an eine beliebige Stelle innerhalb des Tags, das Sie ändern möchten, und geben Sie im Normalmodus cst<div>
( c
hange s
urrounding t
ag to <div>
) ein. Der Tag-Name wird sowohl im öffnenden als auch im schließenden Tag in „div“ geändert, und Sie kehren in den Normalmodus zurück.
Antwort2
Hier sind einige Schritte:
- Platzieren Sie den Cursor auf dem ersten Tag.
- Wählen Sie den äußeren HTML-Code durch Drücken von: vat.
Drücken Sie Esc, um den visuellen Modus zu verlassen, und geben Sie Folgendes ein:
:'<,'<s/span/div/ :'>,'>s/span/div/
Beachten Sie, dass dies
:'>,'>s/span/div/
nicht korrekt funktioniert, wenn das gleiche schließende Tag zweimal in derselben Zeile vorkommt, da immer das erste geändert wird. Um dies zu beheben, verwenden Sie:'>,'>s/.*\zsspan/div/
stattdessen:. Siehe:Wie ändere ich das letzte Vorkommen der Zeichenfolge in der Zeile?
Verwandt:
Antwort3
Der VimMitläuferDas Plugin kann Folgendes:
Antwort4
Mit demSwapIt - Erweiterbarer Keyword-Swapper<C-a>
können Sie Tag-Gruppen definieren, die dann über / umgeschaltet werden können <C-x>
. Zum Beispiel in ~/.vim/ftplugin/html_swapit.vim
:
SwapList layout p div span
Wenn Sie sowohl Start- als auch End-Tag in derselben Zeile haben (und es gibt nur eines von diesem Typ), können Sie beide über meinenChangeGlobally-Plugin.
Es gibt auch mehrere „Multicursor“-Plugins, mit denen Sie bestimmte Wörter markieren und alle auf einmal bearbeiten können.