it-swarm.com.de

vim / gedit löscht Wörter zwischen den Zeichen

Ich habe eine riesige Datei mit Einträgen wie den folgenden:

<option value="201">Medical</option>
<option value="203">Finance</option>
<option value="205">Tax Return</option>
---------------------------
---------------------------

Ich versuche, "Options" -Einträge in dieser Datei auf einmal zu löschen, damit die Datei nach der Bearbeitung wie folgt aussieht:

Medical
Finance
Tax Return
----------
----------

Ich suchte dies in Google, wenn ich dies mit vim oder gedit tun konnte, fand aber keine relevanten Informationen dazu (ich weiß nicht, mit welchem ​​Schlüsselwort ich suchte). Hat jemand eine Idee, bitte?

6
user3215

In vim können Sie Folgendes verwenden, um das zu tun, was Sie wollen.

:%s/<[^>]*>\([^<]*\).*/\1/g

Hier verwende ich den Befehl s. Dies ist die vollständige Syntax, die Sie überprüfen können, indem Sie :help :s eingeben.

:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]

% für range bedeutet die gesamte Datei, {pattern} ist ein regulärer Ausdruck {string} bedeutet die Zeichenkette, die ersetzt werden muss. Dies kann Rückreferenzen enthalten, d. H. Einen Teil des übereinstimmenden Musters, das in geschweiften Klammern eingeschlossen ist. [flags] sind einige zusätzliche Optionen. g für global, d. H. Alle Muster in einer Zeile müssen ersetzt werden. Ein weiteres nützliches Flag ist c, das vor dem Ändern eine Bestätigung verlangt. [count] muss die Anzahl der Male sein, denke ich.

Dies kann also so gelesen werden, dass nach einem <gefolgt von einer beliebigen Zahl oder nicht mehr als> Zeichen gesucht wird, dann a> und anschließend eine beliebige Anzahl von nicht mehr als <Zeichen in der ersten Gruppe\1 und dann eine beliebige Zahl oder ein beliebiges Zeichen ausgewählt wird. Ersetzen Sie dies durch die erste Gruppe\1 weltweit.

Überprüfen Sie diesen Link, um mehr über Details zu vim-spezifischen regulären Ausdrücken zu erfahren http://www.softpanorama.org/Editors/Vimorama/vim_regular_expressions.shtml

11
balki

Installieren Sie surround.vim , das eine Normalmodus-Zuordnung dst bereitstellt, die den Job erledigen sollte.

Um dies auf mehrere Zeilen anzuwenden, wählen Sie diese im visuellen Modus aus und rufen Sie auf

:'<,'>normal dst

Dadurch wird der Normalmodus-Befehl dst auf den ausgewählten Bereich angewendet. Wenn Sie es auf die gesamte Datei anwenden möchten (nicht nur auf die visuelle Auswahl), verwenden Sie den folgenden Befehl

:%normal dst
9
Adam Byrtek