2010-01-27 18 views
8

Chciałbym, aby vim podświetlił całe linie pasujące do określonych wzorów. Mogę podświetlić cały tekst w linii (wykonując syn match MyMatch "^.*text-to-match.*$"), ale zawsze zatrzymuje się na końcu tekstu. Chciałbym kontynuować ten termin, na przykład podświetlając CursorLine.Jak ustawić składnię vim podświetlić całą linię?

Próbowałem zastąpić $ z \n^, mając nadzieję, że będzie go owijać. Bez zmiany. (Nie spodziewałem się, że to zadziała, ale nie ma nic złego w próbowaniu.) Próbowałem też dopasować offset syn-pattern (o którym przeczytałem tutaj: http://vimdoc.sourceforge.net/htmldoc/syntax.html#:syn-pattern). Krótko mówiąc, dodanie he=he-5 spowoduje wyróżnienie 5 znaków, ale he=he+5 nie wyświetla żadnych dodatkowych znaków, ponieważ nie ma znaków do wyróżnienia.

To jest moja pierwsza próba stworzenia składni vim i jestem względnie nowa w vimie. Proszę być łagodnym i zawierać wyjaśnienia.

Dzięki!

(EDIT: Zapomniałem obejmują, to multiline podkreślić, że prawdopodobnie zwiększa złożoność bit.).

+0

Czy Twój wzór powinien czytać '^ * text-to-match * $'..? – Cascabel

+0

Jefromi, to jest. TAK najwyraźniej wykorzystuje owinięte gwiazdki do zaznaczenia kursywą. Naprawiono to teraz. – valadil

+0

Nie ma innych składni, ale jest całkiem możliwe, że resztą mojej składni jest samo bludgeon. Może powinienem zacząć od linii, które chcę w pełni podkreślić, a następnie napisać resztę, gdy to działa? – valadil

Odpowiedz

8

Z dokumentacji na syn-pattern:

podświetlonym obszarze nigdy nie będzie zewnątrz dopasowanego tekstu.

Byłbym zaskoczony, gdyby to zadziałało, ale z drugiej strony Vim zawsze jest pełen niespodzianek.

+0

Tak, ale wzór pasuje do całej linii. Powinien podświetlić całą linię. – Cascabel

+1

Jeśli okno ma 80 znaków, a tekst ma 4 znaki, dopasowywane są tylko 4 znaki i podświetlane są tylko 4 znaki. OP chce podświetlić wszystkie 80 kolumn. – Jay

+1

Jay ma rację. Nie ma możliwości naśladowania zachowania opcji 'cursorline' ze standardowym podświetlaniem składni. Podświetlanie składni ma na celu podkreślenie istniejącego tekstu. – jamessan

10

nie jest bardzo adaptacyjne jak nazwa pliku (bufor) i linii do pełnego rzędu podświetleniem Musi być wyraźnie określone, ale widocznie komenda sign można stosować:

Jest możliwe, aby podświetlić całej karty linia przy użyciu mechanizmu : podpis.
Przykład można znaleźć na :help sign-commands
W skrócie:

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

Oczywiście, należy wybrać higlight grupę, która zmienia kolor tło dla argumentu linehl.

źródło: Erik Falor, vim mailing list

+0

Możesz podświetlić całą linię w ten sposób, ale tekst straci podświetlanie składni. –

Powiązane problemy