2011-08-11 13 views
8

Chcę dostosować podświetlanie składni w Vimie (wersja GUI). Istnieje istniejący plik składni dla mojego języka. Chcę dodać do tej składni podświetlanie koloru tła dla każdej linii, jeśli ta linia zaczyna się od >. Pomyślałem, że mogę to osiągnąć przede wszystkim przezNiestandardowe podświetlanie składni Vima tylko w tle

:syntax match Output /^>.*$/ 

i dodanie

:hi Output guibg=LightBlue 

do colourscheme. Tło tekstu w liniach Output staje się kolorowe, a następnie jasnoniebieskie, ale również nadpisuje kolor pierwszego planu. Więc większość podświetlania składni znika. Jak mogę zachować podświetlanie składni pierwszego planu w tych liniach?

Również: Czy istnieje sposób przedłużenia podświetlania tła do końca (prawy koniec ekranu) tych linii?

+1

To jest dobre pytanie. Obawiam się, że odpowiedź jest prawdopodobnie nie do obojga, ale mam nadzieję, że ktoś mnie oszuka. – Owen

Odpowiedz

0

Spróbuj tego:

:hi Output guibg=LightBlue guifg=NONE 
+0

Dostaję vim.gtk -g: "E254: Kann die Farbe None nicht zuweisen". Tłumaczenie na angielski: Nie można przypisać koloru Brak. – rembremading

+0

Potrzebne do wszystkich zakrętek. Poprawione. – bhinesley

+0

Dzięki, znalazłem się, że polecenie nie narzeka z NONE, ale nadal otrzymuję wynik opisany powyżej. Zwróć uwagę, że umieszczam polecenie highlight na początku pliku colourscheme i wprowadzam polecenie składni w edytorze. Czy to zależy od zamówienia? – rembremading

3

Oto jak zachować składnię, jestem dopasowując linie zaczynające się od {

:hi Output guibg=LightBlue 
:match Output '\%>0v{.*' 

enter image description here

Edit: ponieważ chcesz naprzeciwko potrzebujesz:

:match Output '^[^<].*$' 

enter image description here

+0

Działa (w odwrotnej kolejności). Czy pierwsza linia to coś więcej niż zwykłe wyrażenie, takie jak moje? Masz pomysł, czy podświetlanie całej linii może być realizowane za pomocą podświetlania składni? – rembremading

+0

Rozglądam się, ale nie mogę znaleźć. W przypadku wyrażenia regularnego dopasowujemy '^. * $', Dlatego warto podświetlić, aż pojawi się znak '\ r', a nie do rozmiaru okna. Może jest coś związanego z ': set ve = all', ale nie jestem pewien. –

+0

w regex używam dopasowań '\%' wszystko '>' po '0v' wirtualna kolumna zero, następnie' {.* 'aby dopasować zawartość zaczynającą się od {. –

0

Najłatwiej osiągnąć to, czego szukasz jest z komendą w :match jak Eric Fortis podkreślił.

Jedyny sposób, jaki znam, aby osiągnąć to poprzez podświetlanie składni, wymaga dopasowania całej linii, tak jak obecnie. Będziesz wtedy musiał określić, używając modyfikatora contains=..., które elementy składni mogą znajdować się w twojej linii. Jestem też całkiem pewien, że te elementy będą musiały mieć przypisany atrybut contained. W ten sposób dowolny element znaleziony w linii, tj. Dopasowany przez .*, zachowa jego podświetlenie.

Więcej informacji na stronie :help :syn-contains.

Powiązane problemy