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

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

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

Hauleth
источник
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

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

эбеновая рука
источник