Bạn có thể bọc khối đó trong một điều kiện sử dụng exists()hàm để kiểm tra xem một biến, lệnh hoặc hàm được xác định bởi plugin có được biết đến vim không.
Dưới đây là một vài bit mà tôi có trong các tệp trong ~ / .vim:
" after/plugin/speeddating.vim
if exists(':SpeedDatingFormat')
SpeedDatingFormat %-d %B %Y
endif
" ftplugin/ruby.vim
if exists('g:loaded_surround') && !exists('b:surround_'.char2nr(':'))
let b:surround_{char2nr(':')} = ":\r"
endif
Lưu ý rằng các bit trên nằm trong các tệp được đánh giá sau các plugin thông thường, ở đây là ftplugin và một tệp trong after/pluginthư mục.
Một tùy chọn khác là sử dụng các khối thử / bắt, mặc dù điều này đòi hỏi ít nhất là vim 7.0:
if v:version >= 700
try
runtime bundle/pathogen/autoload/pathogen.vim
call pathogen#infect()
catch
endtry
endif
Một khi một cái gì đó trong tryphần của khối đó không thành công, nó sẽ bỏ qua
catchphần đó. Vì catchphần này trống, nó sẽ tiếp tục với phần còn lại của tệp khởi tạo sau endtrycâu lệnh.
Vì đây là tải mã theo cách thủ công thay vì dựa vào plugin đã được tải, nên điều này có thể được thực hiện trong chính tệp .vimrc.
~/.vimrc, vì vậy bạn sẽ không thể kiểm tra tác động của plugin trong~/.vimrckhi trừ khi bạn kiểm tra sự tồn tại của tệp plugin hoặc trì hoãn kiểm tra cho đến khi các plugin được tải với trình tự động như Vim Entry.