2009-04-03 3 views
3

Ich brauche einen Skript-Code, um "[Capítulo" und "]" und alles zwischen ihnen hervorzuheben. Vielen Dank.Vim: brauche Hilfe mit einem winzigen Skript-Code zu markieren

Ich möchte, dass es funktioniert, wenn ich zum Beispiel eine .txt-Datei öffne. Genauso wie Code Highlighting.

+0

Wenn Sie /\[Capitulo.*\]/ eingeben, was passiert? – ojblass

+0

Will es auch richtig schreiben? Klar, dass in der Frage oder sonst jeder Antwort gleich sein wird! – ojblass

Antwort

5

Hier ist eine einfache Möglichkeit, es zu tun:

in vim, stellen Sie sicher, Syntax Highlighting ist mit :syn on

führen Sie den Befehl :highlight, um eine Liste aller th e markieren Gruppennamen und Beispiele dafür, wie sie aussehen. Die Error Gruppe sieht aus wie es auch in meiner Farbpalette zeichnet sich durch, so werde ich in meinem Beispiel verwenden (aber Sie einen der anderen Namen verwenden können, wie Todo oder Search)

:syntax match Error /\[Capítulo[^\]]*\]/ 

Dieses Muster wird Sie halten von gierig passend zum größten Brocken. Auch wenn andere Leute vorschlagen, dass Sie den regulären Ausdruck verwenden /\[Capítulo.*\]/ - es ist wahrscheinlich nicht, was Sie wollen, weil es alles dazwischen passt, wenn es zwei oder mehr solche Muster in einer Zeile gibt.

Zum Beispiel /\[Capítulo.*\]/ wird diese gesamte Linie entsprechen:

[Capítulo foo] diese Worte sollten nicht hervorgehoben werden [Capítulo bar]

Das gleiche Beispiel, aber mit /\[Capítulo[^\]]*\]/ wird nur Spiel Zeug im Inneren []:

[Capítulo foo] diese Worte sollten nicht hervorgehoben werden [Capítulo bar]

mit regulären Ausdrücken, es ist ein verbreiteter Trick, um eine Gruppe zu bilden, die alles, aber die Zeichen übereinstimmt, die Sie möchten Ihr Spiel beenden, anstatt die .* der Verwendung das wird so viele Zeichen wie möglich übereinstimmen. In diesem Fall machen wir die Gruppe [^\]]* - das sagt „Spiel alles außer].“

Wenn dies die Art und Weise funktioniert, wie Sie es möchten die Syntax Übereinstimmungsleitung fügen, ohne die „:“, um Ihre .vimrc

+0

Eine andere Option zum Vermeiden der schließenden Klammer ist die Verwendung einer nicht gierigen Übereinstimmung: /\[Capítulo.\{-}\]/. \ {-} ist Vims Äquivalent zu Perls *? Operator und sagt Übereinstimmung null oder mehr, so wenig wie möglich. – DrAl

1

Ein regulärer Ausdruck ist das, was Sie suchen:

Typ / in „Suchmodus“ und geben Sie ein:

\[Capítulo.*\]/
+0

dann müssen Sie die Hervorhebung aktivieren: set hls –