我在我的vimrc中有这些行:
let basepath=','.'~/.vim/plugged/'
" theme plugins
let &runtimepath.=basepath . 'morhetz/gruvbox'
let &runtimepath.=basepath . 'itchyny/lightline.vim'
let &runtimepath.=basepath . 'edkolev/tmuxline.vim'
是否有一种方法来编写一个函数来封装这种行为?我想更正如下内容:
loadplugin('somebody/plugin.vim')
和这一行的效果是一样的:
let &runtimepath.=basepath . 'somebody/plugin.vim'
对于一般情况,即当您不关心不存在的路径时,您可以简单地执行
exe 'set rtp+='.basepath.a:plugin
对于类似的路径处理,我提出了一个函数,该函数只在路径不存在且存在时才添加路径。
" autoload/lh/path.vim
" Function: lh#path#munge(pathlist, path) {{{3
function! lh#path#munge(pathlist, path) abort
if type(a:pathlist) == type('str')
let pathlist = split(a:pathlist, ',')
return join(lh#path#munge(pathlist, a:path), ',')
else
if ! empty(glob(a:path))
call lh#list#push_if_new(a:pathlist, a:path)
endif
return a:pathlist
endif
endfunction
" autoload/lh/list.vim
" Function: lh#list#push_if_new(list, value) {{{3
function! lh#list#push_if_new(list, value) abort
if index(a:list, a:value) < 0
call add (a:list, a:value)
endif
return a:list
endfunction
在这里我找到了答案:
function LoadPlugin(plugin)
let basepath=','.'~/.vim/plugged/'
let &runtimepath.=basepath . a:plugin
endfunction
"invoke this way
call LoadPlugin('somebody/plugin.vim')