Kann Vim übereinstimmende HTML-Tags wie Notepad++ hervorheben?

Lesezeit: 5 Minuten

Benutzer-Avatar
linqq

Vim unterstützt übereinstimmende Paare von geschweiften Klammern, runden Klammern und eckigen Klammern. Dies eignet sich hervorragend zum Bearbeiten von Sprachen im C-Stil wie PHP und JavaScript. Aber was ist mit übereinstimmenden HTML-Tags?

Notepad++ hat diese Funktion schon so lange, wie ich sie benutze. Es ist sehr nützlich, erkennen zu können, wo HTML-Blöcke beginnen und enden. Was ich suche, ist so etwas für Vim (siehe die grünen div-Tags):

Beispiel für die Hervorhebung übereinstimmender HTML-Tags

Eine Bonusfunktion: Hervorheben nicht geschlossener HTML-Tags, wie das rote Tag im obigen Screenshot.

Pass Es an wurde als das nächstbeste vorgeschlagen, aber es erfordert einen zusätzlichen Tastendruck, um seine Funktionalität zu nutzen. Ich möchte sehen können, wo die HTML-Blöcke ohne einen zusätzlichen Tastendruck beginnen und enden.

Ich habe das Internet durchforstet, um so etwas für Vim zu finden. Anscheinend bin ich nicht der Einzige, laut zwei anderen StackOverflow-Fragen und einem Nabble Faden.

Ich habe mich fast damit abgefunden, dass Vim HTML-Tags nicht visuell abgleichen kann. Ist Vim dazu in der Lage?

Nachtrag: Wenn dies derzeit mit vorhandenen Plugins nicht möglich ist, hat irgendein Vimscript-Experte da draußen irgendwelche Hinweise, wie man an das Schreiben eines geeigneten Plugins herangehen kann?

  • Können Sie erklären, inwiefern diese Funktion „sehr nützlich“ ist? Ich muss nicht wirklich zu jedem Zeitpunkt alles über alles wissen. Wenn ich etwas wissen muss, ist Vim darauf ausgelegt, es zu machen sehr leicht zu verstehen in sehr wenigen Tastenanschlägen.

    – römisch

    17. November 2011 um 15:25 Uhr

  • Ich muss zwar nicht alles wissen, aber wenn ich leicht erkennen kann, wann ein HTML-Tag endet, kann ich die Struktur der Datei, mit der ich arbeite, grob verstehen. Ich habe auch viel mit schlecht geschriebenem Code zu tun, daher stoße ich manchmal auf ein HTML-Tag ohne schließendes Tag, das immer behoben werden muss.

    – linqq

    17. November 2011 um 16:02 Uhr

  • @romainl Ich lese deine Antwort sehr oft und deine Sichtweise gefällt mir sehr gut. Aber diesmal muss ich widersprechen. Ich kann diese Funktion für nicht unbedingt erforderlich halten, aber ich finde, dass dies eine ziemlich nette Frage ist. Es sieht für mich seltsam aus, dass es keinen einfachen Weg gibt, es mit Vim zu bekommen.

    – Lucapette

    17. November 2011 um 23:21 Uhr

  • @Lucapette, danke. Ich mag die Frage eigentlich auch. Ich habe noch nie eine solche Funktion verwendet und ich hatte nie das Bedürfnis danach. Aber es ist wahrscheinlich eines dieser Dinge, ohne die Sie nicht leben können, wenn Sie es einmal versucht haben. Ich mag meinen Arbeitsablauf und Arbeitsbereich sauber und konzentriert, frei von „Verwaltungsschrott“ und ich denken eine solche Funktion könnte überflüssig sein. Der perfekte Kandidat für ein Plugin. Man kann wahrscheinlich versuchen, sich von Matchit als Ausgangspunkt inspirieren zu lassen.

    – römisch

    18. November 2011 um 6:19 Uhr

  • Hast du diese Antwort gesehen? stackoverflow.com/questions/1957083/…

    – Greg Küster

    18. November 2011 um 9:28 Uhr

Benutzer-Avatar
Greg Küster

Ich musste heute mit etwas HTML arbeiten, also dachte ich, ich würde das angehen. Ein ftplugin zu vim.org hinzugefügt, das Ihr Problem lösen sollte.

Sie können es hier auf vim.org bekommen.

Sie können es hier auf github herunterladen.

Hoffe, es funktioniert für Sie. Lassen Sie mich wissen, wenn Sie irgendwelche Probleme haben.

  • Vielen Dank! Das ist genau die Funktionalität die ich suche. Nur zwei kleine Probleme, falls Sie Lust haben, sie zu beheben: 1. Derzeit wird nur das entgegengesetzte Tag abgeglichen. Wäre es möglich, auch das Tag abzugleichen, auf dem sich der Cursor befindet? 2. Wenn ein HTML-Tag derzeit Attribute hat, werden diese ebenfalls ausgewählt. Ist es möglich, nur den Tag-Namen ohne Attribute auszuwählen?

    – linqq

    21. November 2011 um 19:49 Uhr


  • Gute Vorschläge. Sie sollten beide in Version 1.2 auf vim.org behandelt werden. Der passende Regex ist jetzt komplizierter, also lassen Sie es mich wissen, wenn Sie Fehler finden.

    – Greg Küster

    21. November 2011 um 20:35 Uhr

  • Wie gewünscht habe ich dieses ftplugin zu github hinzugefügt. Siehe meine aktualisierte Antwort für den Link.

    – Greg Küster

    22. November 2011 um 19:16 Uhr

  • @GregSexton du bist jetzt offiziell ein Held 😉

    – Lucapette

    23. November 2011 um 18:06 Uhr

  • Gerade gefunden, sieht gut aus, aber beachten Sie, dass ich “filetype plugin on” zu meiner ~/.vimrc hinzufügen musste, damit es aktiviert wird. Wenn es nicht funktioniert, nachdem Sie das Plugin in Ihrem ftplugin-Ordner abgelegt haben, fügen Sie das obige zu Ihrer ~/.vimrc hinzu und Sie sollten fertig sein.

    – Geoff

    27. März 2012 um 0:04 Uhr

Benutzer-Avatar
Valloric

Gregs MatchTag.vim-Plugin ist großartig, aber ich wollte etwas mehr. Ich wollte die umschließenden Tags stets hervorgehoben werden, nicht nur, wenn sich der Cursor auf einem der Tags befindet.

Also schrieb ich MatchTagAlways was alles tut, was Gregs MatchTag tut, und außerdem immer das umschließende Tag hervorhebt, egal wo sich der Cursor im Code befindet. Es funktioniert auch mit nicht geschlossenen Tags und HTML-Vorlagensprachen wie Jinja oder Handlebars.

Hier ist ein GIF, das es in Aktion zeigt:

MTA in Aktion

  • Coole Lösung – Ich würde wahrscheinlich die Originalversion verwenden, aber ich kann sehen, wie hilfreich dies ist. Ich wünschte, mehr Antworten hätten GIF-Demos, das ist großartig!

    – Jason

    17. September 2013 um 21:28 Uhr

  • Stimme Jason voll und ganz zu, +1 für tolle GIF-Hacks.

    – Dan Bechard

    4. März 2014 um 17:20 Uhr

  • Dies funktioniert besser als die akzeptierte Antwort. Aber ich bin mir immer noch nicht sicher, wie ich Tags überprüfen kann, die über die vertikale Bildschirmhöhe hinausgehen. Ich kann den Bildschirm in vim nicht über den Cursor hinaus bewegen und ein geteilter Bildschirm zeigt die aktiven Tags nicht in beiden Fenstern an.

    – Radix07

    17. Juli 2014 um 14:10 Uhr

  • Du absolute Legende, mein Leben ist dadurch so viel besser geworden… <3

    – Karl Glaser

    31. August 2015 um 14:17 Uhr

  • Das ist viel besser als Bounty-Antwort

    – MohitC

    25. Mai 2016 um 8:16 Uhr

Ich kam hierher auf der Suche nach passenden spitzen Klammern im HTML-Stil in Vim. Das scheint zu funktionieren:

:set mps+=<:>
:help matchpairs

  • Diese Methode ist nicht die Lösung, sie lässt einfach ‘<' mit '>‘ übereinstimmen.

    – Daniel YC Lin

    25. Juni 2014 um 3:41 Uhr

1334880cookie-checkKann Vim übereinstimmende HTML-Tags wie Notepad++ hervorheben?

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

Privacy policy