シンプルで爆速なプラグインマネージャー Jetpack.vim
ひでまるブログ

シンプルで爆速なプラグインマネージャー Jetpack.vim

article cover

ひでまる

2025/02/14に公開

vim-jetpack はシンプルで高速なプラグインマネージャーです。本記事では vim-jetpack の概要、インストール方法、基本的な設定を紹介します。

プラグインマネージャーとは?

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

Jetpack.vimについて

GitHub - tani/vim-jetpack: The lightning-fast plugin manager, alternative to vim-plug
The lightning-fast plugin manager, alternative to vim-plug - tani/vim-jetpack
GitHub - tani/vim-jetpack: The lightning-fast plugin manager, alternative to vim-plug favicon https://github.com/tani/vim-jetpack
GitHub - tani/vim-jetpack: The lightning-fast plugin manager, alternative to vim-plug

概要

開発者のtaniさんの記事から引用させていただきます。

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

とても速いVimプラグインマネージャvim-jetpack
とても速いVimプラグインマネージャvim-jetpack favicon https://zenn.dev/dog/articles/jetpack_intro
とても速いVimプラグインマネージャvim-jetpack

インストール

インストール方法についてはVimを使用するかNeovimを使用するかで異なりますので、その通りにご選択ください。

  • Vim
Terminal window
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
Terminal window
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(ドメイン固有言語) に対応しているので、選択肢としての記述方法が利用できます。

冒頭でご説明させていただいた通りJetpackvimlluaどちらでも設定可能です。
一般的なプラグインマネージャーでは新たなことを学ぶ必要があるのでコストがかかるので、筆者がvimlからluaに移行する際プラグインマネージャーを変更することなく移行ができて助かりました。

スタイルのサンプルはREADMEから引用させていただきました。

GitHub - tani/vim-jetpack: The lightning-fast plugin manager, alternative to vim-plug
The lightning-fast plugin manager, alternative to vim-plug - tani/vim-jetpack
GitHub - tani/vim-jetpack: The lightning-fast plugin manager, alternative to vim-plug favicon https://github.com/tani/vim-jetpack/
GitHub - tani/vim-jetpack: The lightning-fast plugin manager, alternative to vim-plug
  • vim-plug style
init.vim
packadd vim-jetpack
call jetpack#begin()
Jetpack 'tani/vim-jetpack', {'opt': 1} "bootstrap
Jetpack '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
init.vim
packadd vim-jetpack
call jetpack#begin()
call jetpack#load_toml('path/to/dein.toml')
call jetpack#add('tani/vim-jetpack', {'opt': 1}) "bootstrap
call 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
init.lua
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
init.lua
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の使用が推奨されています。curlwgetgitが使用できない環境(ipadのvimなど)を想定されて実装されています。

ちょっと前は g:jetpack#optimization, g:jetpack_ignore_patterns, g:jetpack_copy_method といった設定が追加されておましたが、削除されたようです。

まとめ

vim-jetpack は、シンプルかつ高速な Vim / Neovim のプラグインマネージャーです。
ぜひ導入して、快適な Vim 環境を構築してみてください!

Other articles