Trwałe: ustawić składnię dla danego typu pliku?

103

Pracuję nad projektem Symfony2, który używa Twig, a typy plików to myfile.html.twig. Vim nie wykrywa automatycznie podświetlania składni, więc nie stosuje żadnego. Mogę używać :set syntax=HTMLpo otwarciu pliku, ale jest to ból podczas przeskakiwania między plikami.

Czy istnieje sposób na trwałe ustawienie podświetlania składni dla określonego typu pliku w vimie?

Bendihossan
źródło

Odpowiedzi:

114

Możesz autocmdto osiągnąć za pomocą:

augroup twig_ft
  au!
  autocmd BufNewFile,BufRead *.html.twig   set syntax=html
augroup END

Powinno działać.

Hauleth
źródło
4
Przyjaciel właśnie mi to zwrócił. Ustaw au BufRead,BufNewFile *.html.twig set filetype=twigau BufRead,BufNewFile *.html.twig set syntax=HTML
typ
27
Proponuję umieścić tę linię w ~/.vim/ftdetect/html.twig.vimpliku (powinieneś ją utworzyć), co jest właściwym miejscem dla takich autokomend.
xaizek
@xaizek Rozumiem, że to jest zalecane, ale czy masz pojęcie, dlaczego to nie działa u mnie, jeśli wstawię ~/.vimrczamiast ~/.vim/ftdetect/?
Haralan Dobrev
2
@HaralanDobrev, prawdopodobnie zostanie nadpisany przez inną autokomendę zdefiniowaną po tej linii. Uruchom :autocmd BufNewFile,BufRead *.html.twigw Vimie, aby zobaczyć wszystkie zarejestrowane autokomendy (spróbuj także z oddzielnymi zdarzeniami, tylko BufNewFilei tylko BufRead). Sprawdź również wyjście :verbose set syntax?.
xaizek
1
Jak łatwo było znaleźć to rozwiązanie, sprawia, że ​​żałuję, że wiki Vima nie istniało
Jared Beach
59

Dodaj jeden z następujących fragmentów do swojego .vimrc:

" Set the filetype based on the file's extension, overriding any
" 'filetype' that has already been set
au BufRead,BufNewFile *.html.twig set filetype=html

lub

" Set the filetype based on the file's extension, but only if
" 'filetype' has not already been set
au BufRead,BufNewFile *.html.twig setfiletype html
Muhammad Reda
źródło
6
To lepsza ogólna odpowiedź niż zaakceptowana. Jeśli vim nie może wykryć typu pliku (i automatycznie zapewnia podświetlanie składni), lepiej jest ustawić typ pliku niż tylko składnię pliku.
mrfred
1
setfiletypepowinno być set filetypePrzynajmniej tak mogłem to zadziałać
dau_sama
1
@dau_sama setfiletype=htmlnie jest poprawną składnią; Naprawiłem odpowiedź. Zwróć na to uwagęsetfiletype html i set filetype=htmlrób różne rzeczy, jak wspomniano w odpowiedzi.
bdesham
10
au BufNewFile,BufRead,BufReadPost *.twig set syntax=HTML

I dodaj tę linię ~/.vimrcdo, aby ustawienia były trwałe.

Igor Chubin
źródło
2

Wiem, że to nie odpowiada bezpośrednio na pytanie, jednak odpowiada to intencji pytania, czyli uzyskanie podświetlania składni podczas pracy z Twig / Symfony 2

Proponuję sprawdzić https://github.com/beyondwords/vim-twig (nie mój), który zapewnia:

  • plik podświetlania składni dla * .html.twig,
  • wykrywanie typów plików dla tych samych i
  • wtyczka typu pliku, umożliwiająca modyfikowanie różnych ustawień zgodnie z wymaganiami podczas edycji plików * .html.twig

mam nadzieję, że to pomoże

ebonhand
źródło