2012-07-26 26 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。但是完成上面的語法定義之後的程序是正確的

相關問題