Wie kann ich identische Teile mehrerer Dateien gleichzeitig bearbeiten?

Wie kann ich identische Teile mehrerer Dateien gleichzeitig bearbeiten?

Ich habe mehrere HTML-Dateien, die eine kleine Website bilden. Mehrere Codezeilen sind oben in den Dateien dupliziert (obwohl sie <title>unterschiedlich sind), und einige Zeilen sind unten dupliziert.

Ich könnte einen Pre-Compiler wie Jekyll verwenden und Layouts verwenden, sodass ich den Code nur einmal ändern muss, aber ich finde, dass dies das Projekt unnötig kompliziert macht. Ich könnte reguläre Ausdrücke verwenden (was ich derzeit tue, indem ichDirDo.vim), aber das ist etwas umständlich.

Gibt es also ein Plugin, das die identischen Teile einer Gruppe von Dateien erkennt und es Ihnen ermöglicht, alle auf einmal zu bearbeiten? Oder gibt es andere Möglichkeiten, dies zu tun, an die ich vielleicht nicht gedacht habe?

Antwort1

In Vim kann dieses Problem in zwei Teile zerlegt werden:

  1. Anwenden einer Änderung auf mehrere Dateien
  2. Wiederholen derselben Bearbeitung

Für 1. verwenden Sie dieDirDoPlugin; Alternativen wären die integrierten :argdo, :bufdo, usw.

Für 2. können Sie jede beliebige (Kombination von) Vim-Befehlen verwenden. Der leistungsstärkste ist :substitute, wobei Sie mit a :[range]die Zeilen auswählen und mit regulären Ausdrücken den Text in diesen Zeilen ändern (den Punkt finden, an dem er geändert werden kann).

Sie können auch ein Makro aufzeichnen und es über erneut anwenden :normal! @a. Wenn es sich um eine einzelne Bearbeitung am Anfang einer einzelnen Zeile handelt, :[address]normal! .würde eine Wiederholung über ausreichen (ist aber auf eine einzelne Bearbeitungsoperation und die Tatsache beschränkt, dass :normalder Cursor an den Anfang der Zeile positioniert wird).

Antwort2

Sie könnenCtrlSF.vimum in allen Dateien nach einem bestimmten Muster zu suchen und dann gleichzeitig den Teil um die Suchergebnisse herum zu bearbeiten mitvim-mehrere-Cursor. Es gibt jedoch einige Einschränkungen, Sie können beispielsweise keine Zeilen hinzufügen oder löschen (siehe README.md).

verwandte Informationen