Постоянный: установить синтаксис для данного типа файла?


104

Я работаю над проектом Symfony2, который использует Twig, а типы файлов myfile.html.twig. Vim не распознает подсветку синтаксиса автоматически и не применяет ее. Я могу использовать :set syntax=HTMLпосле открытия файла, но при переключении между файлами это затруднительно.

Есть ли способ постоянно устанавливать подсветку синтаксиса для определенного типа файла в vim?

Ответы:


114

Вы можете использовать autocmdдля этого:

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

Должно сработать.


4
Друг мне тоже на это указал. Установите au BufRead,BufNewFile *.html.twig set filetype=twigau BufRead,BufNewFile *.html.twig set syntax=HTML
тип файла

27
Я бы посоветовал поместить эту строку в ~/.vim/ftdetect/html.twig.vimфайл (вы должны создать его), что является правильным местом для таких автокоманд.
xaizek

@xaizek Я понимаю, что это рекомендуется, но знаете ли вы, почему у меня не работает, если я вставлю ~/.vimrcвместо ~/.vim/ftdetect/?
Харалан Добрев

2
@HaralanDobrev, вероятно, он будет перезаписан другой автокомандой, определенной после этой строки. Запустите :autocmd BufNewFile,BufRead *.html.twigVim, чтобы увидеть все зарегистрированные автокоманды (также попробуйте с отдельными событиями, только BufNewFileи только BufRead). Также проверьте вывод :verbose set syntax?.
xaizek

1
Насколько легко было найти это решение, заставляет меня желать, чтобы vim wiki не существовала
Джаред Бич

61

Добавьте один из следующих отрывков в свой .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

или

" 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

6
Это лучший общий ответ, чем принятый. Если vim не может определить тип файла (и автоматически выделить синтаксис), лучше установить тип файла, а не только синтаксис файла.
mrfred

1
setfiletypeдолжно быть set filetypeПо крайней мере, так я могу заставить это работать
dau_sama

1
@dau_sama setfiletype=htmlнедопустимый синтаксис; Я исправил ответ. Обратите внимание на это setfiletype htmlи set filetype=htmlсделайте разные вещи, как указано в ответе.
bdesham

10
au BufNewFile,BufRead,BufReadPost *.twig set syntax=HTML

И добавьте эту строку, ~/.vimrcчтобы сделать настройки постоянными.


2

Я знаю, что это не дает прямого ответа на вопрос, однако это отвечает на цель вопроса, заключающуюся в том, чтобы подсветка синтаксиса работала с Twig / Symfony 2.

Я предлагаю вам проверить https://github.com/beyondwords/vim-twig (не мой), который предоставляет:

  • файл подсветки синтаксиса для * .html.twig,
  • определение типа файла для одного и того же, и
  • плагин типа файла, позволяющий при необходимости изменять различные настройки при редактировании файлов * .html.twig

надеюсь, это поможет

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.