Persisten: setel sintaks untuk jenis berkas tertentu?

103

Saya sedang mengerjakan proyek Symfony2 yang menggunakan Twig, dan jenis filenya adalah myfile.html.twig. Vim tidak secara otomatis mendeteksi penyorotan sintaks dan karenanya tidak menerapkannya. Saya dapat menggunakan :set syntax=HTMLsetelah saya membuka file tetapi ini merepotkan saat beralih antar file.

Apakah ada cara untuk terus menyetel penyorotan sintaks untuk jenis file tertentu di vim?

Bendihossan
sumber

Jawaban:

114

Anda dapat menggunakan autocmduntuk mencapai itu, yaitu:

augroup twig_ft
  au!
  autocmd BufNewFile,BufRead *.html.twig   set syntax=html
augroup END

Harus bekerja.

Hauleth
sumber
4
Seorang teman baru saja menunjukkan hal ini kepada saya. Atur jenis file: au BufRead,BufNewFile *.html.twig set filetype=twigAtur sintaks:au BufRead,BufNewFile *.html.twig set syntax=HTML
Bendihossan
27
Saya akan menyarankan untuk meletakkan baris ini ke ~/.vim/ftdetect/html.twig.vimfile (Anda harus membuatnya), yang merupakan tempat yang tepat untuk perintah otomatis tersebut.
xaizek
@xaizek Saya mengerti ini dianjurkan, tetapi apakah Anda tahu mengapa hal itu tidak bekerja untuk saya jika saya dimasukkan ke dalam ~/.vimrcbukan ~/.vim/ftdetect/?
Haralan Dobrev
2
@HaralanDobrev, perintah tersebut mungkin ditimpa oleh perintah otomatis lain yang ditentukan setelah baris ini. Jalankan :autocmd BufNewFile,BufRead *.html.twigdi dalam Vim untuk melihat semua perintah otomatis terdaftar (coba juga dengan acara terpisah, hanya BufNewFiledan saja BufRead). Periksa juga keluaran :verbose set syntax?.
xaizek
1
Betapa mudahnya menemukan solusi ini membuat saya berharap vim wiki tidak ada
Pantai Jared
59

Tambahkan salah satu bagian berikut ke Anda .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

atau

" 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
Muhammad Reda
sumber
6
Ini adalah jawaban umum yang lebih baik daripada jawaban yang diterima. Jika vim tidak dapat mendeteksi jenis file (dan secara otomatis menyediakan penyorotan sintaks), lebih baik untuk menyetel jenis file daripada hanya sintaks file.
mrfred
1
setfiletypeseharusnya set filetypeSetidaknya begitulah cara saya membuatnya berhasil
dau_sama
1
@dau_sama setfiletype=htmlbukan sintaks yang valid; Saya telah memperbaiki jawabannya. Perhatikan itu setfiletype htmldan set filetype=htmllakukan hal yang berbeda, seperti yang disebutkan dalam jawaban.
bdesham
10
au BufNewFile,BufRead,BufReadPost *.twig set syntax=HTML

Dan tambahkan baris ini ~/.vimrcuntuk membuat pengaturan tetap ada.

Igor Chubin
sumber
2

Saya tahu ini tidak secara langsung menjawab pertanyaan, namun ini menjawab maksud pertanyaan, yaitu agar penyorotan sintaks bekerja dengan Twig / Symfony 2

Saya sarankan Anda memeriksa https://github.com/beyondwords/vim-twig (bukan milik saya), yang menyediakan:

  • file penyorotan sintaks untuk * .html.twig,
  • deteksi jenis file yang sama, dan
  • plugin jenis file, memungkinkan Anda untuk mengubah berbagai pengaturan yang diperlukan saat mengedit file * .html.twig

saya harap ini membantu

ebonhand
sumber