\_.
anstelle von .
ermöglicht das Anpassen aller Zeichen einschließlich Zeilenumbrüchen. Aber das allein wird dazu führen, dass die Regex-Engine über Bord geht, da Regexes standardmäßig gierig sind. Verwenden Sie \{-}
anstelle von *
für eine nicht gierige Übereinstimmung alle.
Da der Befehl g/ /d
nur eine einzelne Zeile löscht (selbst für eine mehrzeilige Übereinstimmung), wäre es vorzuziehen, zu s/ / /g
(global ersetzen) zu wechseln.
:%s/<!--\_.\{-}-->//g
Sie sollten XSLT verwenden, um die Datei in eine neue Datei umzuwandeln. Sie verwenden die Identitätstransformation mit einer zusätzlichen Regel, um die Kommentare nicht zu kopieren.
%Vor%Sie können "xsltproc" im libxslt-Paket unter Linux verwenden, um dies als ein Skript zu tun, von dem ich mir vorstellen kann, dass es von vim aus ausgeführt werden kann.
Heute,
Eingabe nicht
%Vor%den Kommentar löschen, wenn der Cursor irgendwo im Kommentarblock steht?
Sie müssen eine vim mit Textobjekten zur Kompilierzeit aktiviert haben. Eingabe:
%Vor%lässt Sie sehen, ob Textobjekte in Ihrem Build aktiviert sind.
Es gibt eine Menge dieser funkigen Textauswahl. Sehen Sie sich die relevante Seite in den Dokumenten an .
Bearbeiten: Möglicherweise müssen Sie
hinzufügen %Vor%zu Ihrem .vimrc, damit dies funktioniert.
HTH
Prost,
Wenn es nicht zu viel Aufwand ist und Sie auf Ihrem System gawk haben. Sie können dies versuchen
%Vor%Ich glaube, das sollte funktionieren:
%Vor%Das Fragezeichen macht das Sternchen "faul" anstatt "gierig", was bedeutet, dass es so wenig wie möglich passt, um den Ausdruck zu erfüllen. Dies verhindert, dass der Ausdruck den mittleren Teil dieses Beispiels entfernt:
%Vor% EDIT: Sieht so aus, als ob die vim-Variante von Regex *?
lazy matching nicht unterstützt. Mein Schlechter.