2012-07-26 27 views
48

我正在使用Twig的Symfony2项目,文件类型为myfile.html.twig。 Vim不会自动检测语法高亮,因此不应用任何语法。打开文件后,我可以使用:set syntax=HTML,但在文件之间跳转时很痛苦。vim:persistent:为给定的文件类型设置语法?

有没有办法在vim中为特定文件类型永久设置语法高亮?

回答

71

您可以使用autocmd来实现这一目标,即:

autocmd BufNewFile,BufRead *.html.twig set syntax=html 

应该工作。

+2

一位朋友也向我指出了这一点。 设置文件类型:'au BufRead,BufNewFile * .html.twig set filetype = twig' 设置语法:'au BufRead,BufNewFile * .html.twig set syntax = HTML' – Bendihossan 2012-07-26 09:27:15

+14

我建议把这行代码放到'〜/ .vim/ftdetect/html.twig.vim'文件(你应该创建它),这是这种自动命令的正确位置。 – xaizek 2012-07-26 09:30:35

+0

@xaizek我明白这是推荐的,但是你有什么想法,为什么它不起作用,如果我把'〜/ .vimrc'而不是'〜/ .vim/ftdetect /'放进去? – 2014-05-26 23:56:11

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

并将此行添加到~/.vimrc以使设置保持不变。

1

我知道这并不直接回答这个问题,但是这个答案,这是获得语法高亮与枝条/ Symfony的工作的意图,2

我建议你看看https://github.com/beyondwords/vim-twig(不是我) ,其中规定:

  • 所需的语法高亮文件* .html.twig,
  • 文件类型检测相同,并
  • 文件类型的插件,允许你修改各种设置时编辑* .html.twig文件

我希望这有助于

16

添加以下行之一的.vimrc

" Set the type for the file type and override if file type 
" already has detected 
au BufRead,BufNewFile *.html.twig set filetype=html 

OR

" Set the type for the file type but do NOT override if file type 
" already has detected 
au BufRead,BufNewFile *.html.twig setfiletype=html 
+1

这是一个比公认的更好的通用答案。如果vim无法检测到文件的类型(并自动提供语法高亮显示),最好设置文件类型而不仅仅是文件的语法。 – mrfred 2017-06-13 18:48:24

+1

'setfiletype'应该是'set filetype' 至少我可以让它工作 – 2017-08-17 15:07:06

0

这是最简单的情况。通常它可能是复杂的函数来确定语法。不幸的是,它们可能工作不正确如果你有简单的情况,当算法给出错误时,yum需要从一个中排除扩展名,并为这种情况单独编写。例如,我总是获得mac文件的vmasm语法。所以确实是纯粹的GNU汇编程序宏文件。因此,我需要通过命令手动更改语法:每次打开此文件进行编辑时,都需要set syntax = asm。但是完成上面的语法定义之后的程序是正确的

相关问题