Sử dụng ftplugin đơn cho nhiều hơn một filetype


10

Tôi có một ftplugin theo &runtimepath/ftplugin/c.vimđó đặt tất cả các tùy chọn ưa thích của tôi cho các tệp c. Tuy nhiên, tôi cũng muốn sử dụng các cài đặt tương tự cho cppcác tệp. Tôi chỉ có thể sao chép các cài đặt trên, nhưng điều đó có vẻ dư thừa. Có cách nào để tải một ftplugin cho nhiều hơn một filetype không?

Câu trả lời:


10

Ftplugin mặc định ( /usr/share/vim/vim74/ftplugin/cpp.vimtrên hệ thống của tôi) đã làm điều này:

" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
  finish
endif

" Behaves just like C
runtime! ftplugin/c.vim ftplugin/c_*.vim ftplugin/c/*.vim

runtimenên liên quan đến runtimepath:

Có thể có nhiều {file}đối số, cách nhau bởi khoảng trắng. Mỗi cái {file}được tìm kiếm trong thư mục đầu tiên 'runtimepath', sau đó trong thư mục thứ hai, v.v.

Nếu tôi tạo một ~/.vim/ftplugin/c.vim, điều này cũng được thực thi cho các tệp C ++ mà không làm gì cả!

Nếu bạn không có tệp này trong phiên bản Vim của mình ,, bạn có thể tạo một ~/.vim/ftplugin/cpp.vimtệp mới bằng runtime!câu lệnh.


Hoặc, nếu bạn đang sử dụng hệ thống UNIX-y, bạn có thể sử dụng liên kết tượng trưng:

$ ln -s ~/.vim/ftplugin/c.vim ~/.vim/ftplugin/cpp.vim

Ah, tôi đã không nhận ra điều đó! Quan sát tốt. Tôi sẽ sử dụng giải pháp thời gian chạy nếu tôi cần điều này cho các kiểu tệp khác.
EvergreenTree

1

Trong cpp.vim đặt:

source <sfile>:h/c.vim

<sfile>mở rộng đến tập tin hiện có nguồn gốc, và :hcó nghĩa là người đứng đầu của nó.


Không có gì phải làm. Như Martin đã giải thích, các ftplug C được tự động lấy nguồn cho bộ đệm C ++
Luc Hermitte

Thêm cho những người đọc khác, ví dụ: tạo .scs được xử lý tương tự như .css, v.v.
run_the_race

Sau đó, trừ khi bạn muốn tải một tệp rất cụ thể, IMO, :runtime! ftplugin/css*.vim ftplugin/css/*.vimsẽ là một giải pháp tốt hơn.
Luc Hermitte
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.