Jak sprawić, by polecenia podświetlania w .vimrc od razu działały w Vimie 7.4?

9

Mam kilka highlightpoleceń w moim .vimrcpliku. W Vim 7.3 zaczęły obowiązywać natychmiast po uruchomieniu Vima. Po aktualizacji do Vima 7.4 już tak nie jest. Vim początkowo używa domyślnego podświetlania. Gdy ładuję .vimrcsię po raz drugi przez wykonanie source ~/.vimrc, podświetlanie działa tak, jak chcę.

Powinieneś być w stanie odtworzyć ten problem, wykonując następujące czynności:

  1. Zrób kopię swojego .vimrcpliku.

  2. Zamień ~/.vimrcna plik zawierający tylko linię highlight Type ctermfg=28 cterm=bold.

  3. Uruchom vim dummy.cw 256-kolorowym terminalu (na przykład GNOME).

  4. Wpisz intw buforze. intPowinien pojawić się w regularnych czcionki i być kolorowe Zielone światło, które nie jest to, co chcę.

  5. Enter :source ~/.vimrc. Teraz intpowinny pojawić się pogrubioną czcionką i mieć kolor ciemnozielony.

Zgodnie z artykułem Jak kontrolować / konfigurować kolory vima , po prostu wstawiaj highlightpolecenia .vimrc. Artykuł mówi, że należy umieścić syntax enablepo highlightpoleceń, ale to nie robi żadnej różnicy.

Moja pierwsza poprawka miała poprzedzić każde highlightpolecenie .vimrcz autocmd VimEnter *. Działa to w przypadku niektórych typów plików, ale nie w przypadku innych (pliki C są przykładem).

Jaki jest powód tego zachowania? Jak mogę wykonać highlightpolecenia, gdy Vim jest uruchamiany, aby działały dla wszystkich buforów podczas całej sesji Vima?

Wolfgang Jeltsch
źródło
brzmi jak numer 542
Christian Brabandt,
Tak, podczas dodawania set compatiblena początku .vimrcpodświetlanie składni działa zgodnie z oczekiwaniami. Więc to naprawdę wydaje się być ten błąd w akcji.
Wolfgang Jeltsch,
Poprzedziłem highlightpolecenia poleceniem autocmd ColorScheme *, które zaproponowano jako obejście w zgłoszeniu błędu. To nadal nie działa. ☹
Wolfgang Jeltsch,
Piszę teraz własną kolorystykę, która najwyraźniej działa również wokół tego błędu.
Wolfgang Jeltsch,
Christian, czy możesz napisać swój komentarz jako odpowiedź? W końcu jest to właściwa odpowiedź na mój problem. A może istnieje inne podejście do rozwiązywania problemów, które faktycznie ujawniają błędy?
Wolfgang Jeltsch

Odpowiedzi:

5

To nie jest jednoznaczna odpowiedź, a twój problem brzmi jak problem 542 . Najwyraźniej możesz obejść ten problem, pisząc własny podstawowy schemat kolorów zamiast pisać te hi ...instrukcje bezpośrednio w .vimrc.

Christian Brabandt
źródło
Myślę, że dzieje się tak z powodu tego problemu Vima; więc twoja odpowiedź naprawdę wydaje się być prawidłową odpowiedzią na mój problem.
Wolfgang Jeltsch
3

W rzeczywistości nie powinieneś umieszczać własnych wyróżnień w vimrc, ale w plikach składni celnej.

Pliki te powinny znajdować się w ~/.vim/after/syntax/filetype.vimmiejscu, w którym filetypeoczekiwany jest typ pliku. Jeśli jesteś najbardziej zadowolony z pliku składni, ale chcesz dodać kilka poleceń, możesz wykonać następujące kroki (wzięte z :h mysyntaxfile-add):

  1. Utwórz tam katalog o nazwie „after / syntax”. Dla Uniksa:

    mkdir ~/.vim/after
    mkdir ~/.vim/after/syntax
    
  2. Napisz skrypt Vima zawierający polecenia, których chcesz użyć. Na przykład, aby zmienić kolory dla składni C:

    highlight cComment ctermfg=Green guifg=Green
    
  3. Zapisz ten plik w katalogu „after / syntax”. Użyj nazwy składni z dodanym „.vim”. Dla naszej składni C:

    :w ~/.vim/after/syntax/c.vim
    

Otóż ​​to. Przy następnej edycji pliku C kolor komentarza będzie inny. Nie musisz nawet restartować Vima.

:h mysyntaxfileto dobre miejsce, aby uzyskać informacje na temat poprawiania własnych plików składniowych. Dowiedz się także Vimscript The Hard Way jako kilka rozdziałów na ten temat.

statox
źródło
3
Co jeśli chcę zmienić podświetlenie dla wszystkich typów plików. Na przykład chcę, aby kolor komentarzy był ciemnoniebieski, bez względu na typ pliku.
Wolfgang Jeltsch
Wypróbowałem mniej więcej podejście, które zasugerowałeś. Dodałem plik .vimrc/highlighting.vim, utworzyłem katalog .vimrc/syntax/afteri dodałem kilka dowiązań symbolicznych w postaci * typ pliku * .vimwskazujących .vimrc/highlighting.vimna ten katalog. Podświetlanie składni nadal nie działa.
Wolfgang Jeltsch
@WolfgangJeltsch Yup jako mojego postu i doc mówi katalog powinien być ~/.vim/after/syntaxnie~/.vimrc
statox
To jest poprawne. Jednak w moim komentarzu była to tylko literówka. Właściwie pracowałem w katalogu, .vima podświetlanie składni nie działało, prawdopodobnie z powodu tego błędu 542.
Wolfgang Jeltsch
nie! nie działa.
Yar
1

Z tego powodu warto miałem ten problem z MacVimem (8.1.950 (155)). Umieszczenie instrukcji podświetlenia po colorscheme.vimrc naprawiło to dla mnie. Na przykład:

highlight SpellCap guisp=Yellow
...
colorscheme evening

->

colorscheme evening
...
highlight SpellCap guisp=Yellow

Halil Özgür
źródło