最近自分の中であつい、 plugpac.vim

指定できる typelazy を追加したのだけれども、プラグインの設定ファイル自体も遅延で読み込んだらさらに vim の起動速くなるんじゃ・・・?? と思って、やってみた。

yukimemi/plugpac.vim

設定の方法は、 typelazyall を指定するだけ。 lazy の場合は g:plugpac_cfg_path に設定されたディレクトリにプラグイン名のファイルがあった場合は vim 起動中に読み込む (source) けど、 lazyall が指定された場合は、遅延で vim 起動後に読み込まれる。

手元で試した感じ、ほんの少し (0.01 s くらい?) 速くなったきがする。 なので、設定としてはこんな感じ。

" Init: {{{1
set encoding=utf-8
scriptencoding utf-8

if &compatible | set nocompatible | endif
augroup MyAutoCmd | autocmd! | augroup END

" Echo startup time on start.
if has('vim_starting') && has('reltime')
  let s:startuptime = reltime()
  au MyAutoCmd VimEnter * let s:startuptime = reltime(s:startuptime) | redraw
        \ | echomsg 'startuptime: ' . reltimestr(s:startuptime)
endif

" Utility: {{{1
" Judge os type. {{{2
let g:is_windows = has('win16') || has('win32') || has('win64')
let g:is_cygwin = has('win32unix')
let g:is_darwin = has('mac') || has('macunix') || has('gui_macvim')
let g:is_linux = !g:is_windows && !g:is_cygwin && !g:is_darwin

" Plugins: {{{1
let s:cache_dir = '~/.cache/vim'
let s:minpac_dir = s:cache_dir . '/pack/minpac/opt/minpac'
let s:plugpac_dir = s:cache_dir . '/plugpac'
let s:minpac_download = 0
if has('vim_starting')
  if !isdirectory(expand(s:minpac_dir))
    echo "Install minpac ..."
    execute 'silent !git clone --depth 1 https://github.com/k-takata/minpac ' . s:minpac_dir
    let s:minpac_download = 1
  endif
  if !filereadable(expand(s:plugpac_dir . '/autoload/plugpac.vim'))
    echo "Install plugpac ..."
    execute 'silent !git clone --depth 1 https://github.com/yukimemi/plugpac.vim ' . s:plugpac_dir . '/autoload'
  endif
  execute 'set packpath^=' . fnamemodify(s:cache_dir, ':p')
  execute 'set runtimepath^=' . fnamemodify(s:plugpac_dir, ':p')
endif

let g:plugpac_cfg_path = '~/.vim/rc'

call plugpac#begin()

" minpac
Pack 'k-takata/minpac', {'type': 'opt'}

" start {{{2
Pack 'Yggdroot/indentLine'
Pack 'itchyny/vim-parenmatch'
Pack 'kana/vim-operator-user'
Pack 'kana/vim-textobj-user'
Pack 'mattn/transparency-windows-vim', {'if': g:is_windows}
Pack 'mattn/vimtweak', {'if': g:is_windows}
Pack 'roxma/nvim-yarp', {'if': !has('nvim')}
Pack 'roxma/vim-hug-neovim-rpc', {'if': !has('nvim')}
Pack 'ryanoasis/vim-devicons'
Pack 'sheerun/vim-polyglot'
Pack 't9md/vim-quickhl'
Pack 'vim-airline/vim-airline'
Pack 'vim-airline/vim-airline-themes'

" opt {{{2
Pack 'morhetz/gruvbox', {'type': 'opt'}
" On-demand loading
Pack 'scrooloose/nerdtree', { 'on':  'NERDTreeToggle' }
Pack 'tpope/vim-fireplace', { 'for': 'clojure' }
" Post-update hook
Pack 'Yggdroot/LeaderF', { 'do': {-> system('./install.sh')}, 'if': g:is_windows }
Pack 'liuchengxu/vim-clap', {'type': 'opt', 'on': 'Clap'}
" Sepcify commit ID, branch name or tag name to be checked out.
Pack 'tpope/vim-sensible', { 'rev': 'v1.2' }
Pack 'junegunn/vim-easy-align', {'type': 'opt', 'on': '<Plug>(EasyAlign)'}
Pack 'lambdalisue/gina.vim', {'type': 'opt', 'on': 'Gina'}
Pack 'majutsushi/tagbar', {'type': 'opt', 'on': 'TagbarToggle'}
Pack 'mattn/sonictemplate-vim', {'type': 'opt', 'on': 'Template'}
Pack 'mbbill/undotree', {'type': 'opt', 'on': 'UndotreeToggle'}
Pack 'mechatroner/rainbow_csv', {'type': 'opt', 'for': 'csv'}
Pack 'mhinz/vim-grepper', {'type': 'opt', 'on': ['Grepper', '<Plug>(GrepperOperator)']}

" lazy {{{2
Pack 'Shougo/context_filetype.vim', {'type': 'lazyall'}
Pack 'Shougo/echodoc.vim', {'type': 'lazyall'}
Pack 'airblade/vim-rooter', {'type': 'lazyall'}
Pack 'andymass/vim-matchup', {'type': 'lazyall'}
Pack 'haya14busa/is.vim', {'type': 'lazyall'}
Pack 'haya14busa/vim-asterisk', {'type': 'lazyall'}
Pack 'haya14busa/vim-edgemotion', {'type': 'lazyall'}
Pack 'haya14busa/vim-operator-flashy', {'type': 'lazyall'}
Pack 'itchyny/vim-cursorword', {'type': 'lazyall'}
Pack 'itchyny/vim-external', {'type': 'lazyall'}
Pack 'itchyny/vim-highlighturl', {'type': 'lazyall'}
Pack 'kana/vim-operator-replace', {'type': 'lazyall'}
Pack 'kana/vim-textobj-entire', {'type': 'lazyall'}
Pack 'kana/vim-textobj-fold', {'type': 'lazyall'}
Pack 'kana/vim-textobj-function', {'type': 'lazyall'}
Pack 'kana/vim-textobj-indent', {'type': 'lazyall'}
Pack 'kana/vim-textobj-line', {'type': 'lazyall'}
Pack 'kshenoy/vim-signature', {'type': 'lazyall'}
Pack 'vim-scripts/autodate.vim', {'type': 'lazyall'}

call plugpac#end()

" Install on initiall setup.
if s:minpac_download
  PackInstall
endif

" Color: {{{1
syntax enable
set background=dark
silent! colorscheme japanesque

" vim:fdm=marker expandtab fdc=3 ft=vim ts=2 sw=2 sts=2:

type に指定する lazylazyall になっただけ。

参考