12 Stimmen

Wie bringe ich Vim Syntax dazu, eine ganze Zeile hervorzuheben?

Ich möchte, dass Vim ganze Zeilen hervorhebt, die bestimmten Mustern entsprechen. Ich kann den gesamten Text in einer Zeile hervorheben lassen (indem ich syn match MyMatch "^.*text-to-match.*$" ), aber er hört immer am Ende des Textes auf. Ich würde gerne bis zum Ende des Begriffs fortfahren, wie bei der Hervorhebung von CursorLine.

Ich habe versucht zu ersetzen $ mit einer \n^ in der Hoffnung, dass das die Sache wieder in Ordnung bringt. Keine Veränderung. (Ich habe nicht wirklich erwarten, dass dies funktionieren würde, aber es schadet nicht, es zu versuchen.) Ich habe auch versucht, die syn-pattern-offset (die ich über hier gelesen: http://vimdoc.sourceforge.net/htmldoc/syntax.html#:syn-pattern ). Lange Rede, kurzer Sinn: Das Hinzufügen von he=he-5 werden 5 Zeichen weniger hervorgehoben, aber he=he+5 zeigt keine zusätzlichen Zeichen an, weil es keine Zeichen zum Hervorheben gibt.

Dies ist mein erster Versuch, eine Vim-Syntax zu erstellen, und ich bin relativ neu in Vim. Bitte seien Sie behutsam und geben Sie Erklärungen.

Danke!

(edit: Ich habe vergessen zu erwähnen, dass dies ein mehrzeiliges Highlight ist. Das erhöht wahrscheinlich die Komplexität ein wenig).

15voto

matt wilkie Punkte 15621

Es ist nicht sehr anpassungsfähig, da der Dateiname (Puffer) und die Zeile bis zur vollständigen Zeilenmarkierung explizit angegeben werden müssen, aber anscheinend ist die Zeichen Befehl verwendet werden kann:

Es ist möglich, einen ganzen Bereich zu markieren Zeile mit der Taste :Zeichen Mechanismus.
Ein Beispiel ist zu finden unter :help sign-commands
Kurz und bündig:

:sign define wholeline linehl=ErrorMsg
:sign place 1 name=wholeline line=123 file=thisfile.txt

Natürlich sollten Sie ein Higlight wählen Gruppe wählen, die die Farbe des Hintergrunds für das Argument linehl ändern.

Quelle: Erik Falor, vim-Mailingliste

10voto

Jay Punkte 53725

Aus der Dokumentation über syn-pattern :

Der hervorgehobene Bereich liegt nie außerhalb des übereinstimmenden Textes.

Ich wäre überrascht, wenn Sie das hinbekommen würden, aber andererseits ist Vim immer voller Überraschungen.

0voto

jmarina Punkte 233

Könnte auch versuchen :set cursorline :cursorcolumn setzen Farben wie folgt ändern: :hi cursorline :hi cursorcolumn unter Verwendung der üblichen term=, ctermfg=, ctermbg= usw. siehe diese Antwort VIM Die gesamte aktuelle Zeile hervorheben

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X