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

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

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

Ответ 1

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

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

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

Ответ 2

Добавьте один из следующих отрывков в ваш .vimrc:

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

или же

" Set the filetype based on the file extension, but only if
" 'filetype' has not already been set
au BufRead,BufNewFile *.html.twig setfiletype html

Ответ 3

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

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

Ответ 4

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

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

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

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

Ответ 5

Это простейший случай. Обычно для определения синтаксиса могут использоваться сложные функции. К сожалению, они могут работать некорректно. Если у вас есть простой случай, когда алгоритм дает ошибку, вам нужно исключить расширение из одного и написать отдельно для этого случая. Например, я всегда получаю синтаксис vmasm для файлов Mac. Так что действительно это чистый файл макроса GNU Assembler. И поэтому мне нужно вручную изменить синтаксис командой: set syntax = asm каждый раз после открытия этого файла для редактирования. Но после выполнения процедуры выше определение синтаксиса правильное.