Có cách nào để đặt một nhận xét trong một tệp mà vim sẽ xử lý để đặt filetype không?


30

Ví dụ: nếu tôi muốn có một tệp có tên gitconfig(không có hàng đầu .) được vim nhận ra là của filetype=gitconfig, thì có cách nào để chỉ ra điều này trong một nhận xét hoặc một cái gì đó tương tự trong chính tệp đó không? Lưu ý, tôi muốn điều này hoạt động trên các hệ thống, vì vậy sửa đổi các tệp khởi động của vim không được ưa thích.

Câu trả lời:


45

Điều này nghe có vẻ như modelinetính năng (xem trợ giúp trực tuyến). Trong gitconfig, bạn có thể có một modeline như sau, gần đầu hoặc cuối của tệp:

# vi: ft=gitconfig

Điều này đòi hỏi các mô hình phải được kích hoạt và vì chúng có thể là mối nguy hiểm bảo mật nên chúng bị tắt theo mặc định trên nhiều hệ thống.

Một cách tiếp cận khác có thể làm việc nhiều hơn một chút là tạo một .vimtệp có chứa

au BufRead,BufNewFile */gitconfig setfiletype gitconfig

và thả nó ~/.vim/ftdetectvào tất cả các hệ thống của bạn.


Hoàn hảo, modeline là những gì tôi đang tìm kiếm. modeline được kích hoạt, nhưng có vẻ như một cái gì đó khác trong thiết lập của tôi đang can thiệp vào nó. Nếu tôi đặt dòng đề xuất của bạn ở đầu tệp, thì sau khi tôi mở lại, nó set filetype?sẽ hiển thị kiểu 'conf'.
Murali Suriar

Có lẽ bạn có thể sử dụng :verbose set filetypeđể xem confgiá trị đến từ đâu - Tôi đoán các cài đặt filetype mặc định của hệ thống ở đâu đó.
jw013

rõ ràng nó đã được đặt cuối cùng từ /usr/share/vim/vim73/filetype.vim. Tại sao phát hiện filetype cấp hệ thống sẽ ghi đè chỉ thị tôi đã đặt trong tệp?
Murali Suriar

bạn đang chạy vim với quyền root? nếu có, tôi nghĩ modeline sẽ không tải.
elias

Cũng kiểm tra giá trị của modelinestùy chọn. :set modelines?Nếu nó được đặt thành 0, nó sẽ không xử lý modeline.
Christian Long

1

Bạn có thể tạo một tệp cú pháp và đặt nó vào share/syntaxthư mục của vim (trên Debian Lenny nó /usr/share/vim/vim71/syntax(bản phân phối của bạn có thể thay đổi)).

Tài liệu về định dạng cú pháp của Vim có tại đây: http://vimdoc.sourceforge.net/htmldoc/syntax.html

Bạn có thể tìm thấy một tệp cú pháp sẵn sàng trên Internet ở đâu đó, nhưng tôi sẽ để nó như một bài tập cho bạn.

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.