持久性:set给定文件类型的语法?


103

我正在开发一个使用Twig的Symfony2项目,文件类型为myfile.html.twig。Vim不会自动检测语法突出显示,因此不应用。:set syntax=HTML打开文件后可以使用,但是在文件之间跳转时很痛苦。

有没有办法为vim中的特定文件类型持续设置语法高亮显示?

Answers:


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
Bendihossan 2012年

27
我建议将这一行记录到~/.vim/ftdetect/html.twig.vim文件中(您应该创建它),这是此类自动命令的正确位置。
xaizek 2012年

@xaizek我理解建议这样做,但是您是否知道为什么如果我输入~/.vimrc而不是它对我不起作用~/.vim/ftdetect/
Haralan Dobrev

2
@HaralanDobrev,此行之后定义的另一个自动命令可能会覆盖它。:autocmd BufNewFile,BufRead *.html.twig在Vim内部运行以查看所有已注册的自动命令(也可以尝试单独的事件,BufNewFile并且仅限BufRead)。同时检查的输出:verbose set syntax?
xaizek

1
找到这个解决方案多么容易,这让我希望vim Wiki不存在
Jared Beach

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 htmlset filetype=html做不同的事情,如答案中所述。
bdesham


2

我知道这并不能直接回答问题,但是可以回答问题的意图,即可以突出显示与Twig / Symfony 2一起使用的语法

我建议您查看https://github.com/beyondwords/vim-twig(不是我的),它提供:

  • * .html.twig的语法突出显示文件,
  • 相同的文件类型检测,以及
  • 文件类型插件,可让您在编辑* .html.twig文件时根据需要修改各种设置

我希望这有帮助

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.