持久性:为给定的文件类型设置语法?

Ben*_*san 91 vim syntax-highlighting macvim twig

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

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

Hau*_*eth 109

你可以用它autocmd来完成它,即:

augroup twig_ft
  au!
  autocmd BufNewFile,BufRead *.html.twig   set syntax=html
augroup END
Run Code Online (Sandbox Code Playgroud)

应该管用.

  • 我建议把这行放到`〜/ .vim/ftdetect/html.twig.vim`文件中(你应该创建它),这是这种自动命令的正确位置. (25认同)
  • 一位朋友也向我指出了这一点.设置文件类型:`au BufRead,BufNewFile*.html.twig set filetype = twig`设置语法:`au BufRead,BufNewFile*.html.twig set syntax = HTML` (3认同)
  • @HaralanDobrev,它可能被此行后定义的另一个自动命令覆盖.在Vim中运行`:autocmd BufNewFile,BufRead*.html.twig`以查看所有已注册的自动命令(也尝试使用单独的事件,仅使用`BufNewFile`并且只查看`BufRead`).还检查`:verbose set syntax?`的输出. (2认同)

Muh*_*eda 45

将以下段落之一添加到您的.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
Run Code Online (Sandbox Code Playgroud)

要么

" 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
Run Code Online (Sandbox Code Playgroud)

  • 这是一个比被接受的更好的通用答案.如果vim无法检测文件类型(并自动提供语法高亮显示),则最好设置文件类型而不仅仅是文件的语法. (5认同)
  • `setfiletype` 应该是 `set filetype` 至少我是这样让它工作的 (2认同)

Igo*_*bin 9

au BufNewFile,BufRead,BufReadPost *.twig set syntax=HTML
Run Code Online (Sandbox Code Playgroud)

并添加此行以~/.vimrc使设置持久.