我计划将 vim-plug 与 NeoVim 一起使用。因此,我的
init.lua
文件将包含函数调用,例如
vim.fn['plug#begin'](vim.fn.stdpath('data') .. '/plugged')
vim.fn['plug#']('hoob3rt/lualine.nvim')
但是,我不想假设 vim-plug 确实已安装。如果未安装 vim-plug,我希望我的
init.lua
文件能够正常降级,而不是抛出错误
E5113: Error while calling lua chunk: Vim:E117: Unknown function: plug#begin
stack traceback:
[C]: in function 'plug#begin'
/Users/andy/.config/nvim/init.lua:8: in main chunk
在尝试调用 vim-plug 函数之前如何检查它们是否存在?
我尝试了print(vim.fn['plug#begin'])
,但由于某种原因打印了一个非空值:
function: 0x0104ba36f0
,即使该函数不存在。
我尝试了大概它正在返回一个抛出您收到的错误的函数。因此我建议使用 :
print(vim.fn['plug#begin'])
,但由于某种原因打印了一个非空值:function: 0x0104ba36f0
,即使该函数不存在。
local success, error = pcall(vim.fn['plug#begin'], vim.fn.stdpath('data') .. '/plugged')
if not success then --[[fail gracefully]] end
警告:这将捕获 any 错误,因此您可能需要执行一些检查,例如 if error:find"Unknown function" then ... end
来仅捕获此特定错误。
let data_dir = has('nvim') ? stdpath('config') : '~/.vim'
if empty(glob(data_dir . '/autoload/plug.vim'))
silent execute '!curl -fLo '.data_dir.'/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif