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


103

Я працюю над проектом 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=twigВстановіть синтаксис:au BufRead,BufNewFile *.html.twig set syntax=HTML
Бендіхоссан,

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

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

2
@HaralanDobrev, ймовірно, це буде замінено іншим автокомандом, визначеним після цього рядка. Запустіть :autocmd BufNewFile,BufRead *.html.twigвсередину Vim, щоб побачити всі зареєстровані автокоманди (також спробуйте окремі події, тільки BufNewFileта тільки BufRead). Також перевірити вихід :verbose set syntax?.
xaizek

1
Наскільки легко було знайти це рішення, змушує мене побажати, щоб vim wiki не існувало
Пляж Джаред

59

Додайте до свого одного з таких уривків .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робіть різні речі, як зазначено у відповіді.
бдешам

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.