Làm thế nào để buộc vim đánh dấu cú pháp một tệp dưới dạng html?


120

Làm cách nào để đặt tô sáng cú pháp của vim để coi phần mở rộng tệp là tệp html?

Tôi đang sử dụng mẫu ez, vì vậy phần mở rộng của tệp là .ezt. Nhưng rất nhiều trong số đó là mã html bình thường.

Câu trả lời:


109

Bạn cũng có thể đặt cái này vào .vimrc của mình:

au BufReadPost *.ezt set syntax=html

E216: Không có nhóm hoặc sự kiện nào như vậy: BufLoad * .ezt đặt cú pháp = html ... tôi đang làm gì sai?
Karthick

2
Theo kinh nghiệm của tôi, cách tiếp cận này sẽ thất bại nếu bạn cung cấp tên tệp chính xác, ví dụ .myspecialdotfile. Nó cần một ngôi sao ở đâu đó để hoạt động, ngay cả khi nó về mặt lý thuyết là không cần thiết.
Ít khi cần thiết.

Tôi có cái này trong .vimrctệp của mình cho Dockerfiles có phần mở rộng cho các mục đích khác nhau. autocmd BufNewFile, BufRead Dockerfile * set filetype = Docker Chỉ cần sử dụng Dockerfile*ngăn chặn Syntax Highlighting từ làm việc khi sử dụng vi Dockerfile- thêm xuyệc ngược cho phép nó làm việc cho Dockerfile/ Dockerfile.somethingDockerfilesomething
Android kiểm soát

204
:set syntax=html

10
@pbr: trả lời chính xác tiêu đề câu hỏi.
Skippy le Grand Gourou

2
> "coi phần mở rộng tệp là tệp html"
0atman

đây là những gì tôi đang tìm kiếm :)
niken

Có thể hữu ích để biết rằng việc chạy :set syntaxsẽ trả về đánh dấu tệp hiện đang được áp dụng
Ari

26

Hãy xem chủ đề Vim wikia này . Một số mẹo hữu ích:

  • Như các câu trả lời khác đã đề cập, bạn có thể sử dụng lệnh vim set để đặt cú pháp. :set syntax=<type>nơi <type>là một cái gì đó giống như perl, html, phpvv

  • Có một cơ chế khác có thể được sử dụng để kiểm soát việc đánh dấu cú pháp được gọi filetype, hay gọi tắt là ft. Tương tự như cú pháp, bạn cung cấp cho nó một kiểu như thế này: :set filetype=html. Các loại file khác perl, phpvv

  • Đôi khi vim "quên" sử dụng cú pháp nào, đặc biệt nếu bạn đang trộn những thứ như php và html với nhau. Sử dụng phím tắt Ctrl+ L( <C-L>) để lấy vim làm mới phần đánh dấu.


Câu trả lời tốt nhất! +!
J. Allan

17

Lưu ý rằng :set syntax=xmlđánh dấu đúng cách nhưng dường như không thành công khi một người đang cố gắng tự động gửi tệp (tức là đang chạy gg=G).

Khi tôi chuyển sang :set filetype=xml, phần đánh dấu hoạt động bình thường và tệp được thụt lề đúng cách.


14

Trong tệp .php (hoặc tệp html), bạn có thể sử dụng Vim Modeline để buộc các lệnh hoặc cài đặt nhất định:

 1 /* vim: syntax=javascript
 2  *
 3  * .submit_norefresh()
 ~
 ~

2
Ý bạn là Modeline
Shammel Lee,

Đôi khi các au ...cài đặt liên quan đến cú pháp trong của tôi ~/.vimrcbị bỏ qua đối với một số tệp nhất định (có lẽ là do siêu dữ liệu được sửa đổi?). Ngoài việc sao chép nội dung tệp đó sang tệp mới, việc đặt mô hình ở đầu tệp đó sẽ hoạt động. Ví dụ: đối với tập lệnh BASH, việc thêm một dòng thứ hai, # vim: syntax=shsau đoạn shebang (dòng đầu tiên #!/bin/bash:) có vẻ hiệu quả. Vì về cơ bản đây là một "nhận xét", tôi chỉ đưa cả hai dòng vào sbbđoạn mã ("shebang bash") của mình.
Victoria Stuart

13

Để làm cho nó tự động, hãy thêm dòng này vào ~/.vimrc:

autocmd BufNewFile,BufRead *.ezt set filetype=html

Nếu bạn chỉ muốn làm điều đó cho tệp hiện tại, hãy nhập:

:set filetype=html

Bạn cũng có thể thay thế syntaxthay vì filetype, nhưng filetypeảnh hưởng đến nhiều thứ hơnsyntax (bao gồm tô sáng cú pháp, quy tắc thụt lề và plugin), vì vậy nói chung bạn nên sử dụng filetypetrừ khi bạn chỉ muốn ảnh hưởng syntax.

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.