Vim標準のパッケージマネージャを使いやすくするスニペットです。
特長
- コマンド
:PackGet
を実行すると、GitHub上のプラグインをインストールできます。- 実行例:
:PackGet 'tpope/vim-surround'
-
.vimrc
にPackGet 'tpope/vim-surround'
のように書いておけば、起動時にプラグインを自動インストールしてくれます。
- 実行例:
- パッケージ管理プラグインを導入する手間がありません。
- dotfilesにvimの設定を書きやすくなります。
スニペット
.vimrc
function! InstallGithubPlugin(id, kind)
let l:idary = split(a:id, '/')
let l:local = split(&rtp, ',')[0] . '/pack/github/' . a:kind . '/' . l:idary[1]
if !isdirectory(l:local)
call mkdir(l:local, 'p')
silent exec ':!git clone --depth 1 https://github.com/' . a:id . '.git ' . l:local
packloadall!
redraw!
endif
endfunction
function! UpdatePlugins()
for d in split(glob(split(&rtp, ',')[0] . '/pack/github/*/*'), '\n')
silent exec ':!git --git-dir=' . d . '/.git reset --hard HEAD'
silent exec ':!git --git-dir=' . d . '/.git pull'
endfor
packloadall!
redraw!
endfunction
command! -nargs=1 PackGet call InstallGithubPlugin(<args>, 'start')
command! -nargs=1 PackGetLazy call InstallGithubPlugin(<args>, 'opt')
command! -nargs=0 PackPullAll call UpdatePlugins()
注
- GitHub上にあるプラグインのみ対応しています。
- Gitのブランチやコミットは指定できません。
- インストール後に操作が必要なプラグインは、手動でしないといけません。
- たとえば
junegunn/fzf.vim
の場合、インストール後にfzf#install()
を手動で実行する必要あり。
- たとえば
- Ubuntu, Windowsで動作確認してます。
その他の機能
- コマンド
:PackPullAll
を実行すると、インストール済みのパッケージを最新にします。 - プラグインの遅延読み込みは、コマンド
:PackGetLazy
でできます。- 例えば goファイルを開いたときに
fatih/vim-go
を読み込みたい時など
- 例えば goファイルを開いたときに
例
.vimrc
" 起動時に読み込むプラグインは、以下のように一行で書けます。
PackGet 'tpope/vim-repeat'
PackGet 'tpope/vim-surround'
" 遅延読み込みするプラグインは、以下のように必要に応じて設定してください。
PackGetLazy 'fatih/vim-go'
augroup au_PackGetLazy_go
autocmd!
autocmd FileType go packadd vim-go
augroup END