vim-jetpack
はシンプルで高速なプラグインマネージャーです。本記事では vim-jetpack
の概要、インストール方法、基本的な設定を紹介します。
プラグインマネージャーとは?
この記事をご覧になっている方はすでにご存知だと思いますが説明させていただきます。
プラグインマネージャーとは、Vim のプラグインを手軽に管理するためのツールです。
dein.vim
や vim-plug
、packer.nvim
など様々な選択肢がありますが、今回紹介する vim-jetpack
は設定が少なくても爆速な設計で筆者のおすすめです。
Neovimはコンフィグをviml
とlua
の二つの選択肢で設定可能です。一般的なプラグインマネージャーではどちらかのみにしか対応しておりませんが、Jetpack
ではどちらにも対応しているのが強みです。
Jetpack.vimについて


概要
開発者のtaniさんの記事から引用させていただきます。
vim-jetpackはvim-plugの実装をvim8/neovim向けにモダン化させdein.vimで用いられている最適化手法を取り入れた,Packer.nvim風のコマンド郡を備えたとても高速なプラグインマネージャです。どのくらい高速なのかといえばプラグインマネージャを用いずにビルトインのプラグイン管理機能を使ったVimよりも高速です。つまり、プラグインマネージャを読み込むオーバーヘッドよりもプラグインマネージャが行う最適化によって削減される時間のほうが大きいということです。
出典: とても速いVimプラグインマネージャvim-jetpack


インストール
インストール方法についてはVim
を使用するかNeovim
を使用するかで異なりますので、その通りにご選択ください。
- Vim
curl -fLo ~/.vim/pack/jetpack/opt/vim-jetpack/plugin/jetpack.vim --create-dirs https://raw.githubusercontent.com/tani/vim-jetpack/master/plugin/jetpack.vim
- NeoVim
curl -fLo ~/.local/share/nvim/site/pack/jetpack/opt/vim-jetpack/plugin/jetpack.vim --create-dirs https://raw.githubusercontent.com/tani/vim-jetpack/master/plugin/jetpack.vim
プラグインの追加
Jetpack
は複数の DSL(ドメイン固有言語) に対応しているので、選択肢としての記述方法が利用できます。
冒頭でご説明させていただいた通りJetpack
はviml
とlua
どちらでも設定可能です。
一般的なプラグインマネージャーでは新たなことを学ぶ必要があるのでコストがかかるので、筆者がviml
からlua
に移行する際プラグインマネージャーを変更することなく移行ができて助かりました。
スタイルのサンプルはREADMEから引用させていただきました。


- vim-plug style
packadd vim-jetpackcall jetpack#begin()Jetpack 'tani/vim-jetpack', {'opt': 1} "bootstrapJetpack 'https://github.com/dense-analysis/ale'Jetpack 'junegunn/fzf.vim'Jetpack 'junegunn/fzf', { 'do': {-> fzf#install()} }Jetpack 'neoclide/coc.nvim', { 'branch': 'release' }Jetpack 'neoclide/coc.nvim', { 'branch': 'master', 'do': 'yarn install --frozen-lockfile' }Jetpack 'vlime/vlime', { 'rtp': 'vim' }Jetpack 'dracula/vim', { 'as': 'dracula' }Jetpack 'tpope/vim-fireplace', { 'for': 'clojure' }call jetpack#end()
- dein / minpac style
packadd vim-jetpackcall jetpack#begin()call jetpack#load_toml('path/to/dein.toml')call jetpack#add('tani/vim-jetpack', {'opt': 1}) "bootstrapcall jetpack#add('https://github.com/dense-analysis/ale')call jetpack#add('junegunn/fzf.vim')call jetpack#add('junegunn/fzf', { 'build': './install' })call jetpack#add('neoclide/coc.nvim', { 'branch': 'release' })call jetpack#add('neoclide/coc.nvim', { 'branch': 'master', 'build': 'yarn install --frozen-lockfile' })call jetpack#add('vlime/vlime', { 'rtp': 'vim' })call jetpack#add('dracula/vim', { 'name': 'dracula' })call jetpack#add('tpope/vim-fireplace', { 'on_ft': 'clojure' })call jetpack#end()
toml記述の設定ファイルにも対応していて驚きました。
[[plugins]]repo = 'tani/vim-jetpack'
[[plugins]]repo = 'tpope/vim-fugitive'on_cmd = 'Git'hook_source = '''let g:fugitive_no_mappings = 1'''hook_post_source = '''echom 'fugitive is loaded''''
- packer.nvim style
vim.cmd('packadd vim-jetpack')require('jetpack.packer').startup(function(use) use { 'tani/vim-jetpack' } -- bootstrap use 'https://github.com/dense-analysis/ale' use 'junegunn/fzf.vim' use {'junegunn/fzf', run = 'call fzf#install()' } use {'neoclide/coc.nvim', branch = 'release'} use {'neoclide/coc.nvim', branch = 'master', run = 'yarn install --frozen-lockfile'} use {'vlime/vlime', rtp = 'vim' } use {'dracula/vim', as = 'dracula' } use {'tpope/vim-fireplace', ft = 'clojure' }, use {'nvim-treesitter/nvim-treesitter', run = ':TSUpdate', config = function() require'nvim-treesitter.configs'.setup { ensure_installed = 'maintained', highlight = { enable = true } } end }end)
- paq.nvim style
vim.cmd('packadd vim-jetpack')require('jetpack.paq') { {'tani/vim-jetpack'}, -- bootstrap 'https://github.com/dense-analysis/ale', 'junegunn/fzf.vim', {'junegunn/fzf', run = './install' }, {'neoclide/coc.nvim', branch = 'release'}, {'neoclide/coc.nvim', branch = 'master', run = 'yarn install --frozen-lockfile'}, {'dracula/vim', as = 'dracula' },}
他のプラグインマネージャーからの移行
前述の通りvim-jetpack
は複数の DSL に対応済みなので、他のプラグインマネージャーから簡単に移行できます。これが本当に感動ポイント。
- vim-plug からの移行
:%s/Plug/Jetpack/g
- dein.vim からの移行
:%s/dein/jetpack/g
- packer.nvim からの移行
:%s/packer/jetpack/g
コマンドについて
Jetpack
はシンプルな設計なため使うコマンドも(ほぼ)一つです。マジ感謝!
JetpackSync
:JetpackSync
プラグインのインストール・更新・最適化を施すコマンドです。これしか使いません。
Jetpack repo
:Jetpack repo ['user/repo', option]
GitHub リポジトリを指定してプラグインを追加できます。用途は限られると思います。
設定
g:jetpack_download_method
" 'curl'と'wget'と'git'が代入可能let g:jetpack_download_method='git'
git
の使用が推奨されています。curl
とwget
はgit
が使用できない環境(ipadのvimなど)を想定されて実装されています。
ちょっと前は g:jetpack#optimization
, g:jetpack_ignore_patterns
, g:jetpack_copy_method
といった設定が追加されておましたが、削除されたようです。
まとめ
vim-jetpack
は、シンプルかつ高速な Vim / Neovim のプラグインマネージャーです。
ぜひ導入して、快適な Vim 環境を構築してみてください!