Các plugin filetype trên trên thực sự làm gì?


11

Tôi hiểu rằng nó tải ftplugin.vimtập tin, nhưng nó thực sự làm gì? Nó có đặt tùy chọn (tùy thuộc vào kiểu tệp) không?

Nếu tôi bao gồm dòng này khi bắt đầu vimrc của tôi

filetype plugin indent on

và sau đó tôi đặt một số tùy chọn sau dòng này (như autoindent, smartindent, v.v.), liệu nó có gây rối với chúng không? Làm cách nào để biết tùy chọn nào bị ảnh hưởng bởi plugin filetype hoặc tệp thụt lề?

Câu trả lời:


7

Có một mô tả tốt trong help filetype.

Bất kỳ tùy chọn nào được xác định cho kiểu tệp sẽ được đặt với setlocal:

:setl[ocal] ...     Like ":set" but set only the value local to the
                    current buffer or window.  Not all options have [..]

Ví dụ /usr/share/vim/vim80/ftplugin/javascript.vim: định nghĩa:

setlocal commentstring=//%s

Bởi vì các tùy chọn cục bộ được ưu tiên hơn các tùy chọn toàn cầu, .vimrccài đặt của bạn có thể bị bỏ qua. Trong trường hợp đó, bạn cần tạo một tệp ~/.vim/after/ftplugin/javascript.vim(với tên của loại tệp bạn muốn thay đổi) và đặt các setlocaltùy chọn của riêng bạn trong đó.

Cách đơn giản nhất để xem tùy chọn được thiết lập là để chỉ cần mở các tập tin cho filetype trong /usr/share/vim/vim80/ftplugin, ../indent../syntax.


1
E492: Không phải là lệnh biên tập: plugin trên [tương tự cho thụt lề]
Tony

Câu cuối cùng của câu trả lời này là sai. filetype plugin onfiletype indent onthực sự là các lệnh riêng biệt, nhưng cả hai có thể được kết hợp để mang lại filetype plugin indent on.
Ruslan

@Ruslan cảm ơn, tôi đã xóa câu đó.
laktak

2

Nó xác định autocommands sẽ được thực thi khi một tệp khớp với mẫu đã cho được mở. Các autocommands này sourcelần lượt các plugin filetype được liên kết với filetype được nhận dạng.

Trong các tập lệnh plugin filetype đó, bạn sẽ có thể tìm / ghi bất cứ thứ gì bạn có thể đặt vào tập lệnh vim. Thực tiễn tốt là không bao giờ định nghĩa những thứ toàn cầu, mà chỉ những thứ địa phương. I E:

  • tùy chọn địa phương với :setlocal opt=value
  • ánh xạ địa phương với :[cnivsxot](nore)map <buffer> ...
  • viết tắt địa phương với :iab-<buffer> ...& co
  • lệnh cục bộ với :command -b ...
  • biến cục bộ với :let b:var = 42

Về

  • các menu, bạn sẽ phải sử dụng các trình cắm mô phỏng các menu cục bộ, xem plugin của Michael Geddes hoặc ngã ba hiện đại hóa của tôi ;
  • các chức năng, bạn có thể đặt chúng trong ftplugins, nhưng chúng được xác định tốt nhất trong các plugin tự động tải.
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.