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/plugin
thư 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 try
phần của khối đó không thành công, nó sẽ bỏ qua
catch
phần đó. Vì catch
phầ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 endtry
câ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~/.vimrc
khi 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.