Zainstalowałem gvim na Fedorze i Win7. Odkryłem, że zarówno vim, jak i gvim w Fedorze nie podświetliły nazwy funkcji w kodzie c, podczas gdy gvim na win7 ją podświetlił.
Odkryłem, że w win7 vim73/syntax/c.vim
ma dodatkowe linie na końcu:
syn match cFunction "\<[a-zA-Z_][a-zA-Z_0-9]*\>[^()]*)("me=e-2
syn match cFunction "\<[a-zA-Z_][a-zA-Z_0-9]*\>\s*("me=e-1
hi cFunction gui=NONE guifg=#B5A1FF
Jeśli dodam te linie do c.vim
Fedory, gvim może również podświetlić nazwę funkcji.
Aby zachować przenośność, chcę po prostu zmodyfikować, .vimrc
aby podświetlić nazwę funkcji. Jednak po dodaniu tych wierszy do .vimrc
nie działało.
Czy ktoś może mi pomóc? Przeprowadziłem wyszukiwanie i istnieje wiele rozwiązań, aby podświetlić nazwy funkcji w vimie. Ale jestem ciekawy, jak sprawić, by te linie działały .vimrc
. Dziękuję bardzo!
vimrc
syntax-highlighting
tamlok
źródło
źródło
~/.vim/after/syntax/c.vim
zamiast tego..vimrc
?autocmd BufEnter *.c hl ...
, ale powinieneś to zachowaćafter/syntax/c.vim
. Każda nowoczesna wersja Vima zrozumie.vim/after/
katalog. W systemie Windows ścieżka byłabyvimfiles/after/...
, więc przenośność nie powinna stanowić większego problemu (szczególnie jeśli używasz żadnych wtyczek).Odpowiedzi:
Powodem tego jest to, że Vim usuwa istniejące elementy składniowe podczas ustawiania
'syntax'
opcji. Dzieje się tak, ponieważ zachowanie starych elementów składni prowadziłoby do dziwnych sytuacji; jeśli masz bufor, który masyntax=foo
i używa,set syntax=bar
to skończysz na buforze, który ma podświetlanie składni dla obufoo
ibar
.Kiedy Vim się uruchamia, ładuje twój
vimrc
raz (przy uruchomieniu), ale ładuje pliki typu pliku i składni za każdym razem, gdy są ustawione opcjefiletype
lubsyntax
, co zresetuje wartości ustawione w twoim vimrc.Nawet gdyby go nie zresetował, nie byłoby dobrym pomysłem dodanie go do vimrc, ponieważ dotyczyłoby wszystkich buforów, a nie tylko buforów z
syntax=c
.Poniższy tekst zakłada Vima w systemie Unix-y, ale będzie on również działał dla użytkowników Neovim i Windows:
~/.vim/
z~/.config/nvim/
.~/.vim/
z%USERPROFILE%\vimfiles\
.Przesłanianie całego pliku
Najprostszym sposobem na zmianę czegoś jest po prostu zastąpienie go . Aby to zrobić, utwórz plik w
~/.vim/<file>.vim
.<file.vim>
jest ścieżką względem$VIMRUNTIME
(w tym podkatalogów). W twoim przykładzie powinno byćsyntax/c.vim
. Zostanie załadowany zamiast pliku w$VIMRUNTIME
.Skutkiem tego jest łatwiejsze wprowadzanie zmian - zmiana wychodzących plików składniowych może być czasem nieco trudna. Minusem jest to, że nie otrzymasz żadnych przyszłych aktualizacji pliku systemowego.
Często używam tego jako punktu wyjścia do eksperymentowania z plikami składni, a następnie wypakowuję moje lokalne zmiany do lokalnego dodatku, używając jednej z metod opisanych poniżej.
Lokalne dodatki
Istnieją dwa sposoby dodawania lokalnych dodatków do plików składniowych, są one funkcjonalnie identyczne i można użyć preferowanej metody.
Syntax
autocmdUżyj
Syntax
autocmd:Zauważ, że łączenie kilku poleceń
|
jest tutaj problematyczne, ponieważ mają one tendencję do interpretowania jako części:syn
polecenia, dlategoautocmd Syntax c
kilka razy powtórzyłem . Alternatywą byłoby użycie funkcji:Zaletą jest to, że wszystkie zmiany mogą być zawarte w jednym pliku. Wadą jest to, że jest trochę brzydka, szczególnie jeśli masz wiele zmian.
po katalogu
Użyj Directory po-:
~/.vim/after/<file>.vim
.Zostanie to załadowane po
<file>.vim
has, gdzie<file.vim>
jest ścieżka względem$VIMRUNTIME
(łącznie z podkatalogami). W twoim przykładzie powinno byćsyntax/c.vim
.Zobacz także
:help after-directory
.Zaletą jest to, że jest nieco bardziej czytelny niż autocmd, szczególnie jeśli masz wiele zmian. Wadą jest to, że musisz skopiować dodatkowy plik, jeśli chcesz wykonać kopię lustrzaną konfiguracji Vima na różnych komputerach (jest to ważny powód, dla którego wiele osób utrzymuje swoje pliki Vima w repozytorium GitHub, aby można je było łatwo skopiować na różne maszyny ).
źródło