2016-10-20 2 views
0

私は自分のvimrcに以下の行を持っている:vim runtimepath変数を操作する関数を書く方法はありますか?

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') 

そして、それは、この行と同じ効果を持っているでしょう:私はこのような権利何かしたかった共通のため

function LoadPlugin(plugin) 
    let basepath=','.'~/.vim/plugged/' 
    let &runtimepath.=basepath . a:plugin 
endfunction 

"invoke this way 
call LoadPlugin('somebody/plugin.vim') 
+1

[病原体](http://www.vim.org/scripts/script.php?script_id=2332)のようなプラグインは、すでにそのようなことをしていますか? –

+2

@IngoKarkat、それだけでなく、OPは '詰まっている 'という言葉は、すでに彼が使用していることを暗示しているようです。 – romainl

+0

@romainl、私は自分自身のすべての依存関係を複製するのでセットアップを簡単にするために、1つを使用する必要はありません。私は成功したと思います。以下のような小さな機能によって、取引が成立します:https://github.com/ninrod/dotfiles/tree/master/vim – ninrod

答えて

0

、私は答えを見つけました大文字と小文字を区別しない場合は、単純に実行することができます。

exe 'set rtp+='.basepath.a:plugin 

同様の種類のパス処理については、まだ存在していない場合と存在する場合のみパスを追加するa functionがあります。

" 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 
1

ここ
let &runtimepath.=basepath . 'somebody/plugin.vim' 
関連する問題