Szukam możliwego rozwiązania dla zastosowania dwóch różnych kolorów tła w jednym buforze vim, w zależności od kontekstu, jak w tym wzniosłym przykładzie tekstu .
Jednym z takich przypadków jest odmienne kodowanie fragmentów kodu w plikach znaczników, aby wyróżniały się bardziej.
Jednak nigdy nie widziałem takiego przykładu z taką konfiguracją.
Czy to w ogóle możliwe w vimie?
colorscheme
Karolis Koncevičius
źródło
źródło
Odpowiedzi:
Ponieważ byłem ciekawy, jak dobrze by to zadziałało, zhakowałem coś razem tego rodzaju prace.
Jak wspomniano w komentarzach do wcześniejszej odpowiedzi, jedynym sposobem na to jest wypełnienie regionów spacjami; co dokładnie robimy; przed napisaniem usuwamy te spacje, więc nie powinieneś przeszkadzać innym.
Pamiętaj, że ten przykład jest bardzo specyficzny dla typu pliku przeceny!
Efekty uboczne :
'list'
jest włączoneNajpierw musisz dodać to do
~/.vim/after/syntax/markdown.vim
:Oczywiście możesz dostosować kolory do swoich upodobań ;-)
Następnie dodaj to do swojego vimrc:
Nie zamierzam wyjaśniać kodu wiersz po wierszu, komentarze powinny wyjaśnić ogólną treść ;-)
źródło
Z pewnością możliwe jest użycie innego koloru tła dla elementów wyróżnionych składnią. Wystarczy zdefiniować
guibg
ictermbg
kolory w swoimhilight
poleceniu. Pierwszy z nich ustawia kolor tła dla GUI Vima, a drugi dla terminala Vima.Ma to jednak istotne ograniczenie, ponieważ może ustawić kolory tła tylko dla znaków, które faktycznie istnieją w pliku.
Powoduje to, że kolor tła nie może rozciągać się poza koniec tekstu w linii do krawędzi okna, więc kolorowanie bloków kodu pokazanych w twoim przykładzie nie jest możliwe:
Możesz także zmienić kolor tła całych linii za pomocą funkcji Znak. (Patrz
linehl
w:help sign.txt
)Należy jednak pamiętać, że:
Wymaga to napisania kodu do umieszczenia znaków w każdym wierszu, który musi być pokolorowany, i aktualizowania ich wraz ze zmianą zawartości pliku,
Domyślnie podczas umieszczania znaku kolumna znaku będzie wyświetlana po lewej stronie okna. Można zmienić kolorystykę kolumny znaku za pomocą
SignColumn
grupy wyróżnień, aw nowszych wersjach Vima można ją całkowicie usunąć. (Patrz:help 'signcolumn'
.)Na przykład, aby dostosować rozwiązanie Carpetsmoker do korzystania z (bardziej niezawodnego) mechanizmu znakowania , możesz wykonać następujące czynności:
Upraszcza to nieco kod i ma mniej zastrzeżeń niż wersja Carpetsmokera.
@ChristianBrabandt „s DynamicSigns plugin sprawia, że korzystanie z funkcji znak dla tego celu łatwiejszego: on opisuje, jak go używać, aby zrobić w tej odpowiedzi .
źródło
guibg
działa tylko dla gvim, prawda?ctermbg
, jak wspomniano.