Vim - Löschen von XML-Kommentaren

7

Wie lösche ich Kommentare in XML?

Wenn sich die öffnenden und schließenden Kommentar-Tags in derselben Zeile befinden, verwende ich :g/^<!--.*-->$/d , um den Kommentar zu löschen. Wie lösche ich die Kommentare, die über viele Zeilen verteilt sind?

    
Vijay Dev 12.11.2009, 14:32
quelle

5 Antworten

17

\_. 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

    
fengb 12.11.2009, 14:40
quelle
2

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.

    
Dave 12.11.2009 14:35
quelle
2

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,

    
Rob Wells 12.11.2009 14:57
quelle
0

Wenn es nicht zu viel Aufwand ist und Sie auf Ihrem System gawk haben. Sie können dies versuchen

%Vor%     
ghostdog74 12.11.2009 14:39
quelle
0

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.

    
Kaivosukeltaja 12.11.2009 14:37
quelle

Tags und Links