Kiên trì: đặt cú pháp cho một loại tệp nhất định?


103

Tôi đang làm việc trên một dự án Symfony2 sử dụng Twig và các loại tệp đều như vậy myfile.html.twig. Vim không tự động phát hiện đánh dấu cú pháp và do đó không áp dụng. Tôi có thể sử dụng :set syntax=HTMLsau khi mở tệp nhưng đây là một điều khó khăn khi chuyển giữa các tệp.

Có cách nào để liên tục thiết lập tô sáng cú pháp cho một loại tệp cụ thể trong vim không?

Câu trả lời:


114

Bạn có thể sử dụng autocmdđể thực hiện điều đó, tức là:

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

Nên làm việc.


4
Một người bạn cũng chỉ ra điều này cho tôi. Đặt filetype: au BufRead,BufNewFile *.html.twig set filetype=twigSet cú pháp:au BufRead,BufNewFile *.html.twig set syntax=HTML
Bendihossan

27
Tôi khuyên bạn nên đặt dòng này vào ~/.vim/ftdetect/html.twig.vimtệp (bạn nên tạo nó), đó là nơi thích hợp cho các lệnh tự động như vậy.
xaizek

@xaizek Tôi hiểu điều này được khuyến khích, nhưng bạn có bất kỳ ý tưởng nào tại sao nó không hoạt động với tôi nếu tôi đưa vào ~/.vimrcthay vì ~/.vim/ftdetect/?
Haralan Dobrev

2
@HaralanDobrev, nó có thể bị ghi đè bởi một lệnh tự động khác được xác định sau dòng này. Chạy :autocmd BufNewFile,BufRead *.html.twigbên trong Vim để xem tất cả các lệnh tự động đã đăng ký (cũng thử với các sự kiện riêng biệt, chỉ BufNewFilevà duy nhất BufRead). Cũng kiểm tra đầu ra của :verbose set syntax?.
xaizek

1
Làm thế nào dễ dàng là để tìm giải pháp này làm cho tôi muốn rằng wiki vim không tồn tại
Jared Bãi biển

59

Thêm một trong những đoạn sau vào của bạn .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

hoặc là

" 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
Đây là một câu trả lời chung chung tốt hơn câu được chấp nhận. Nếu vim không thể phát hiện loại tệp (và tự động cung cấp đánh dấu cú pháp), tốt hơn là nên đặt loại tệp thay vì chỉ cú pháp của tệp.
mrfred

1
setfiletypenên set filetypeÍt nhất đó là cách tôi có thể làm cho nó hoạt động
dau_sama

1
@dau_sama setfiletype=htmlkhông phải là cú pháp hợp lệ; Tôi đã sửa câu trả lời. Lưu ý điều đó setfiletype htmlset filetype=htmllàm những điều khác nhau, như đã đề cập trong câu trả lời.
bdesham

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

Và thêm dòng này vào ~/.vimrcđể làm cho các cài đặt liên tục.


2

Tôi biết điều này không trực tiếp trả lời câu hỏi, tuy nhiên điều này trả lời mục đích của câu hỏi, đó là làm nổi bật cú pháp hoạt động với Twig / Symfony 2

Tôi khuyên bạn nên xem https://github.com/beyondwords/vim-twig (không phải của tôi), cung cấp:

  • tệp đánh dấu cú pháp cho * .html.twig,
  • phát hiện loại tệp cho giống nhau, và
  • plugin loại tệp, cho phép bạn sửa đổi các cài đặt khác nhau theo yêu cầu khi chỉnh sửa tệp * .html.twig

Tôi hi vọng cái này giúp được

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.