シンプルな Vim プラグイン マネージャー。
plug.vim をダウンロードし、「autoload」ディレクトリに置きます。
curl -fLo ~ /.vim/autoload/plug.vim --create-dirs
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
ここで提案されているように、Vim 構成ファイルにコマンドを入れることでプロセスを自動化できます。
iwr - useb https: // raw.githubusercontent.com / junegunn / vim - plug / master / plug.vim |`
ni $HOME / vimfiles / autoload / plug.vim - Force
sh -c ' curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim '
curl -fLo ~ /.var/app/io.neovim.nvim/data/nvim/site/autoload/plug.vim --create-dirs
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
iwr - useb https: // raw.githubusercontent.com / junegunn / vim - plug / master / plug.vim |`
ni " $ ( @ ( $ env: XDG_DATA_HOME , $ env: LOCALAPPDATA )[ $null -eq $ env: XDG_DATA_HOME ] ) /nvim-data/site/autoload/plug.vim " - Force
vim-plug セクションを~/.vimrc
(または Neovim の場合は~/.config/nvim/init.vim
) に追加します。
call plug#begin()
てセクションを開始しますPlug
コマンドを使用してプラグインを一覧表示するcall plug#end()
てセクションを終了します例えば、
call plug#begin ()
" List your plugins here
Plug ' tpope/vim-sensible '
call plug#end ()
ファイルをリロードするか、Vim を再起動すると、次のことが可能になります。
:PlugInstall
プラグインをインストールします:PlugUpdate
プラグインをインストールまたは更新します:PlugDiff
前回の更新からの変更を確認します:PlugClean
リストに存在しないプラグインを削除します注記
基本的に、始めるために知っておく必要があるのはこれだけです。このドキュメントの残りの部分は、機能とオプションについて詳しく知りたい上級ユーザー向けです。
ヒント
plug#end()
filetype plugin indent on
とsyntax enable
を自動的に実行します。これはほとんどのユーザーにとって適切なデフォルトであると考えられますが、この動作を望まない場合は、通話後に設定を元に戻すことができます。
call plug#end ()
filetype indent off " Disable file-type-specific indentation
syntax off " Disable syntax highlighting
次の例は、vim-plug の追加機能を示しています。
call plug#begin ()
" The default plugin directory will be as follows:
" - Vim (Linux/macOS): '~/.vim/plugged'
" - Vim (Windows): '~/vimfiles/plugged'
" - Neovim (Linux/macOS/Windows): stdpath('data') . '/plugged'
" You can specify a custom plugin directory by passing it as the argument
" - e.g. `call plug#begin('~/.vim/plugged')`
" - Avoid using standard Vim directory names like 'plugin'
" Make sure you use single quotes
" Shorthand notation for GitHub; translates to https://github.com/junegunn/seoul256.vim.git
Plug ' junegunn/seoul256.vim '
" Any valid git URL is allowed
Plug ' https://github.com/junegunn/vim-easy-align.git '
" Using a tagged release; wildcard allowed (requires git 1.9.2 or above)
Plug ' fatih/vim-go ' , { ' tag ' : ' * ' }
" Using a non-default branch
Plug ' neoclide/coc.nvim ' , { ' branch ' : ' release ' }
" Use 'dir' option to install plugin in a non-default directory
Plug ' junegunn/fzf ' , { ' dir ' : ' ~/.fzf ' }
" Post-update hook: run a shell command after installing or updating the plugin
Plug ' junegunn/fzf ' , { ' dir ' : ' ~/.fzf ' , ' do ' : ' ./install --all ' }
" Post-update hook can be a lambda expression
Plug ' junegunn/fzf ' , { ' do ' : { - > fzf#install () } }
" If the vim plugin is in a subdirectory, use 'rtp' option to specify its path
Plug ' nsf/gocode ' , { ' rtp ' : ' vim ' }
" On-demand loading: loaded when the specified command is executed
Plug ' preservim/nerdtree ' , { ' on ' : ' NERDTreeToggle ' }
" On-demand loading: loaded when a file with a specific file type is opened
Plug ' tpope/vim-fireplace ' , { ' for ' : ' clojure ' }
" Unmanaged plugin (manually installed and updated)
Plug ' ~/my-prototype-plugin '
" Call plug#end to update &runtimepath and initialize the plugin system.
" - It automatically executes `filetype plugin indent on` and `syntax enable`
call plug#end ()
" You can revert the settings after the call like so:
" filetype indent off " Disable file-type-specific indentation
" syntax off " Disable syntax highlighting
" Color schemes should be loaded after plug#end().
" We prepend it with 'silent!' to ignore errors when it's not yet installed.
silent ! colorscheme seoul256
Neovim では、 init.lua
という名前の Lua スクリプト ファイルに構成を記述することができます。次のコードは、上記の Vim スクリプトの例と同等の Lua スクリプトです。
local vim = vim
local Plug = vim . fn [ ' plug# ' ]
vim . call ( ' plug#begin ' )
-- Shorthand notation for GitHub; translates to https://github.com/junegunn/seoul256.vim.git
Plug ( ' junegunn/seoul256.vim ' )
-- Any valid git URL is allowed
Plug ( ' https://github.com/junegunn/vim-easy-align.git ' )
-- Using a tagged release; wildcard allowed (requires git 1.9.2 or above)
Plug ( ' fatih/vim-go ' , { [ ' tag ' ] = ' * ' })
-- Using a non-default branch
Plug ( ' neoclide/coc.nvim ' , { [ ' branch ' ] = ' release ' })
-- Use 'dir' option to install plugin in a non-default directory
Plug ( ' junegunn/fzf ' , { [ ' dir ' ] = ' ~/.fzf ' })
-- Post-update hook: run a shell command after installing or updating the plugin
Plug ( ' junegunn/fzf ' , { [ ' dir ' ] = ' ~/.fzf ' , [ ' do ' ] = ' ./install --all ' })
-- Post-update hook can be a lambda expression
Plug ( ' junegunn/fzf ' , { [ ' do ' ] = function ()
vim . fn [ ' fzf#install ' ]()
end })
-- If the vim plugin is in a subdirectory, use 'rtp' option to specify its path
Plug ( ' nsf/gocode ' , { [ ' rtp ' ] = ' vim ' })
-- On-demand loading: loaded when the specified command is executed
Plug ( ' preservim/nerdtree ' , { [ ' on ' ] = ' NERDTreeToggle ' })
-- On-demand loading: loaded when a file with a specific file type is opened
Plug ( ' tpope/vim-fireplace ' , { [ ' for ' ] = ' clojure ' })
-- Unmanaged plugin (manually installed and updated)
Plug ( ' ~/my-prototype-plugin ' )
vim . call ( ' plug#end ' )
-- Color schemes should be loaded after plug#end().
-- We prepend it with 'silent!' to ignore errors when it's not yet installed.
vim . cmd ( ' silent! colorscheme seoul256 ' )
指示 | 説明 |
---|---|
PlugInstall [name ...] [#threads] | プラグインのインストール |
PlugUpdate [name ...] [#threads] | プラグインのインストールまたは更新 |
PlugClean[!] | リストにないプラグインを削除します (bang バージョンはプロンプトなしでクリーンアップされます) |
PlugUpgrade | vim-plug 自体をアップグレードする |
PlugStatus | プラグインのステータスを確認する |
PlugDiff | 前回の更新からの変更と保留中の変更を確認する |
PlugSnapshot[!] [output path] | プラグインの現在のスナップショットを復元するためのスクリプトを生成します。 |
Plug
オプションオプション | 説明 |
---|---|
branch / tag / commit | 使用するリポジトリのブランチ/タグ/コミット |
rtp | Vim プラグインを含むサブディレクトリ |
dir | プラグインのカスタムディレクトリ |
as | プラグインに別の名前を使用する |
do | 更新後のフック (string または funcref) |
on | オンデマンド読み込み: コマンドまたは マッピング |
for | オンデマンド読み込み: ファイルの種類 |
frozen | 明示的に指定されない限り、削除したり更新したりしないでください |
フラグ | デフォルト | 説明 |
---|---|---|
g:plug_threads | 16 | 使用するデフォルトのスレッド数 |
g:plug_timeout | 60 | 各タスクの秒単位の制限時間 ( Ruby および Python ) |
g:plug_retries | 2 | タイムアウト時のリトライ回数 ( Ruby & Python ) |
g:plug_shallow | 1 | 浅いクローンを使用する |
g:plug_window | -tabnew | プラグウィンドウを開くコマンド |
g:plug_pwindow | vertical rightbelow new | PlugDiff でプレビュー ウィンドウを開くコマンド |
g:plug_url_format | https://git::@github.com/%s.git | リポジトリ URL を構築するためのprintf 形式 (後続のPlug コマンドにのみ適用されます) |
D
- PlugDiff
S
- PlugStatus
R
- 失敗したアップデートまたはインストールタスクを再試行しますU
- 選択した範囲のプラグインを更新しますq
- 実行中のタスクを中止するか、ウィンドウを閉じます。:PlugStatus
L
- プラグインをロードする:PlugDiff
X
- 更新を元に戻しますプラグインによっては、インストールまたは更新後に追加の手順が必要なものがあります。その場合は、 do
オプションを使用して実行するタスクを記述します。
Plug ' Shougo/vimproc.vim ' , { ' do ' : ' make ' }
Plug ' ycm-core/YouCompleteMe ' , { ' do ' : ' ./install.py ' }
値が:
で始まる場合、Vim コマンドとして認識されます。
Plug ' fatih/vim-go ' , { ' do ' : ' :GoInstallBinaries ' }
Vim 関数を呼び出すには、次のようにラムダ式を渡すことができます。
Plug ' junegunn/fzf ' , { ' do ' : { - > fzf#install () } }
さらに制御が必要な場合は、辞書引数を取る Vim 関数への参照を渡すことができます。
function ! BuildYCM (info)
" info is a dictionary with 3 fields
" - name: name of the plugin
" - status: 'installed', 'updated', or 'unchanged'
" - force: set on PlugInstall! or PlugUpdate!
if a: info .status == ' installed ' || a: info .force
! ./install. py
endif
endfunction
Plug ' ycm-core/YouCompleteMe ' , { ' do ' : function ( ' BuildYCM ' ) }
更新後のフックはプラグインのディレクトリ内で実行され、リポジトリが変更された場合にのみ実行されますが、次のコマンドの bang-versions を使用して無条件に強制的に実行することができますPlugInstall!
そしてPlugUpdate!
。
ヒント
do
オプションをインラインで記述するときは、BAR と二重引用符を必ずエスケープしてください。これらはコマンド区切り文字または末尾コメントの先頭として誤って認識されるためです。
Plug ' junegunn/fzf ' , { ' do ' : ' yes | ./install ' }
ただし、次のように変数 (または任意の Vim スクリプト式) を使用してインライン仕様を抽出すると、エスケープを回避できます。
let g: fzf_install = ' yes | ./install '
Plug ' junegunn/fzf ' , { ' do ' : g: fzf_install }
PlugInstall!
そしてPlugUpdate!
インストーラーは、プラグインのインストール/更新時に次の手順を実行します。
git clone
またはgit fetch
git merge
リモート ブランチをチェックアウトします。!
が付いたコマンド接尾辞を使用すると、すべてのステップが無条件で実行されるようになります。
" NERD tree will be loaded on the first invocation of NERDTreeToggle command
Plug ' preservim/nerdtree ' , { ' on ' : ' NERDTreeToggle ' }
" Multiple commands
Plug ' junegunn/vim-github-dashboard ' , { ' on ' : [ ' GHDashboard ' , ' GHActivity ' ] }
" Loaded when clojure file is opened
Plug ' tpope/vim-fireplace ' , { ' for ' : ' clojure ' }
" Multiple file types
Plug ' kovisoft/paredit ' , { ' for ' : [ ' clojure ' , ' scheme ' ] }
" On-demand loading on both conditions
Plug ' junegunn/vader.vim ' , { ' on ' : ' Vader ' , ' for ' : ' vader ' }
" Code to execute when the plugin is lazily loaded on demand
Plug ' junegunn/goyo.vim ' , { ' for ' : ' markdown ' }
autocmd ! User goyo. vim echom ' Goyo is now loaded! '
注記
おそらくその必要はありません。
適切に実装された Vim プラグインは、プラグイン マネージャー ( :help autoload
) の助けを借りなくても、すでに遅延ロードされているはずです。したがって、これらのオプションが実際に意味をなすケースはほとんどありません。プラグインの読み込みを高速化するのは、ユーザーではなくプラグイン開発者の責任です。ロードに時間がかかりすぎるプラグインを見つけた場合は、プラグインの問題トラッカーで問題を開くことを検討してください。
視点を教えてください。最近のコンピューターでは、プラグインのロードにかかる時間は通常 2 ~ 3 ミリ秒未満です。したがって、非常に多くのプラグインを使用しない限り、50 ミリ秒を超えて節約することはほとんどありません。 50 ミリ秒を削減するために 1 時間かけて慎重にオプションを設定した場合、損益分岐点までに Vim を 72,000 回起動する必要があります。それが良い時間の投資であるかどうか自問する必要があります。
--startuptime
を使用して Vim の起動時間を分析することで、適切な問題に取り組んでいることを確認してください。
vim --startuptime /tmp/log
オンデマンド読み込みは最後の手段としてのみ使用してください。これは基本的にハック的な回避策であり、常に機能することが保証されているわけではありません。
ヒント
空のリストをon
またはfor
オプションに渡すと、プラグインの読み込みを無効にすることができます。 plug#load(NAMES...)
関数を使用してプラグインを手動でロードできます。
https://github.com/junegunn/vim-plug/wiki/tips#loading-plugins-manually を参照してください。
マサチューセッツ工科大学