Text zwischen HTML-Tags in vim löschen?

Lesezeit: 2 Minuten

Ich weiss

di<

wird in einem HTML-Tag selbst gelöscht.

Gibt es eine einfache Möglichkeit, Text zwischen zwei Tags zu löschen?

<span>How can I delete this text?</span>

Vielen Dank!

dit löscht den Text zwischen übereinstimmenden XML-Tags. (it steht für “innerer Tag-Block”.)

Sehen :h it und :h tag-blocks.

  • Und natürlich, cit wenn Sie direkt danach schreiben möchten.

    – Debilsky

    29. Januar 2010 um 1:18 Uhr

  • Und das Surround-Plugin (vim.org/scripts/script.php?script_id=1697) ist großartig, wenn Sie beispielsweise das umgebende Tag (cst) von einem

    in ein

    ändern möchten.

    – Kris Jenkins

    21. November 2010 um 12:45 Uhr


  • Es gibt auch dat (Delete A Tag Block), der die eigentlichen Tags enthält. cit, das wie dit ist, aber danach in den Einfügemodus wechselt. cat, die wie dat ist, aber danach in den Einfügemodus wechselt. Auch di” und di( zum Löschen innerer doppelter Anführungszeichen bzw. zum Löschen innerer Klammern.

    – aiham

    22. Juni 2012 um 0:05 Uhr

  • @KrisJenkins kannst du ein vollständiges Beispiel zeigen, wie man das erreicht? Ich kann das nur mit Anführungszeichen / Klammern tun.

    – FelikZ

    20. März 2015 um 9:01 Uhr

  • Ebenfalls vat (oder vit), gefolgt von wiederholt at (oder it) um nach und nach umgebende Tags auszuwählen . (Oder v2at, etc). Dann d löschen (usw.).

    – Joe Freemann

    16. Februar 2017 um 17:09 Uhr

cit
ci"

Zwei der besten produktivitätsfördernden Befehle von vim.

Ich spare viel Zeit und Mühe mit nur diesen beiden.

  • cit wird in diesem Thread behandelt, aber für die Nachwelt, ci" wird bis zum nächsten gelöscht " gefunden. großartig zum Ändern von Klassennamen in HTML-Tags, wie z <span id="really long annoying-id"> — zuerst mit Cursor "Schlag ci" und in das Einfügen neuer Zeichen zwischen den Anführungszeichen fallen gelassen werden.

    – Alex Moore-Niemi

    26. April 2015 um 16:49 Uhr


  • ciw ist auch nützlich, da es das aktuelle Wort löscht; Ich benutze es mehr als cit und ci" eigentlich.

    – Johannes Sparwasser

    30. Juni 2016 um 17:39 Uhr

  • @AlexMoore-Niemi: ci" löscht tatsächlich den Text nach links bis zum nächsten Zitat und nach rechts bis zum nächsten Zitat und wechselt dann in den Einfügemodus. ct" Eigentlich ist der Befehl zum „Löschen bis zum nächsten“ gefunden worden, aber ja, es verhält sich genauso, wenn der Cursor unter dem linken Anführungszeichen steht.

    – Schlimmchen

    15. August 2017 um 14:36 ​​Uhr

Benutzer-Avatar
JD Frias

Versuchen dt< während sich der Cursor auf dem ersten zu löschenden Zeichen befindet. In Ihrem Beispiel das ‘H’.

  • Auch sehr nützlich für andere Situationen, danke! (dachte ich denke es sollte “dt<" sein)

    – CMB

    3. Juni 2009 um 18:21 Uhr

  • Dies ist zwar technisch richtig, erfordert jedoch, dass Sie zum ersten Zeichen navigieren, das Sie löschen möchten, anstatt einfach irgendwo in die Zeile zu springen. Aber wahr ist wahr. 🙂

    – Lyonsinbeta

    19. Juli 2012 um 18:04 Uhr

Benutzer-Avatar
Kes

dit – inneres Tag löschen, bleibt im Befehlsmodus
cit – inneres Tag ändern, wechselt in den Bearbeitungsmodus

di” – innerhalb von “” löschen
di’ – innerhalb von ” löschen

di( – innerhalb löschen ()
di) – innerhalb löschen ()

di[ – delete inside []

di]- innen löschen []

di{ -innerhalb {} löschen
di} – innerhalb von {} löschen

di< - innerhalb von <> löschen
di> – usw

ersten Buchstaben vertauschen d zum cwenn Sie nach Eingabe des Befehls im Bearbeitungsmodus sein möchten

(Cursor auf erstes zu löschendes Zeichen)
v/<[enter]d

Diese Lösung beginnt mit dem ersten Zeichen und wechselt dann in den visuellen Modus (“v”). Es sucht dann nach der nächsten Startklammer (“/<") und drückt dann die Eingabetaste, um die Suche zu beenden.

An diesem Punkt deckt Ihre visuelle Auswahl den zu löschenden Text ab. drücken Sie d (“d”), um es zu löschen.

Wenn ich dies für eine Reihe von Tags tun müsste, würde ich den Befehl aufzeichnen und ihn mit einigen anderen Suchen kombinieren, um ihn wiederholbar zu machen. Die Tastenfolge könnte so aussehen:

[cursor on start of file]
qa/>[enter]lv/<[enter]dnq

dann drücken:

[email protected]

um dies für 20 Tags zu tun

  • Früher habe ich den Befehl like verwendet c/<[enter] viel in meinem “Vim-Leben”, aber jetzt bereue ich das ein bisschen. Wie Sie sehen, unterstützen die meisten “Vi-mode”-Plugins für beliebte andere Editoren/IDEs diesen speziellen Befehlstyp nicht. Sie unterstützen cit, ci", ct<und doch. Also unterrichte ich wieder.

    – pilat

    5. Januar 2017 um 19:10 Uhr


Benutzer-Avatar
Nick Sarafa

Wenn Sie darauf abzielen, Text zwischen Flags zu löschen, empfehle ich die Installation Vim-Surround und läuft dst wodurch das Surround-Tag gelöscht wird

  • Früher habe ich den Befehl like verwendet c/<[enter] viel in meinem “Vim-Leben”, aber jetzt bereue ich das ein bisschen. Wie Sie sehen, unterstützen die meisten “Vi-mode”-Plugins für beliebte andere Editoren/IDEs diesen speziellen Befehlstyp nicht. Sie unterstützen cit, ci", ct<und doch. Also unterrichte ich wieder.

    – pilat

    5. Januar 2017 um 19:10 Uhr


1334940cookie-checkText zwischen HTML-Tags in vim löschen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy