回答:
まず、関連するドキュメントは:h packages
、新しくコンパイルされたVim8バージョンとGithubにあります。
最初の重要な注意事項は、語彙についてです。Vim8では、パッケージは次のように定義されます。
Vimパッケージは、1つ以上のプラグインを含むディレクトリです。
これは、ユーザーが同じアーカイブ内のすべてのプラグインを管理できるように、新しいパッケージマネージャーが作成されたことを意味します。このドキュメントには、次の利点がリストされています。
パッケージはアーカイブとしてダウンロードし、独自のディレクトリに展開できます。したがって、ファイルは他のプラグインのファイルと混合されません。これにより、更新と削除が簡単になります。
パッケージは、git、mercurialなどのリポジトリにすることができます。これにより、更新が非常に簡単になります。
パッケージには、互いに依存する複数のプラグインを含めることができます。
パッケージには、起動時に自動的にロードされるプラグインと、必要なときにのみロードされるプラグインを含めることができます
:packadd
。
したがって、アイデアは、次の構造を持つすべてのプラグインを含むフォルダーを作成することです。
$HOME/.vim/pack/my-plugins/
start/
foo/
plugin/
foo.vim
syntax/
some.vim
bar/
plugin/
bar.vim
opt/
buzz/
plugin/
buzz.vim
フォルダの定置は、オプションで定義されたpackpath
(参照します:h 'packpath'
)。
フォルダの構造の重要性に注意してください。
start
フォルダーには、起動時に自動的にロードされるプラグインが含まれています。opt
フォルダーには、packadd
コマンドとともにロードされる「オプションの」プラグインが含まれています。plugin
、autoload
、doc
、...)は、プラグインに慣れているものです。以下にフォルダの要約を示します。
start/foobar/plugin/foo.vim " always loaded, defines commands
start/foobar/plugin/bar.vim " always loaded, defines commands
start/foobar/autoload/foo.vim " loaded when foo command used
start/foobar/doc/foo.txt " help for foo.vim
start/foobar/doc/tags " help tags
opt/fooextra/plugin/extra.vim " optional plugin, defines commands
opt/fooextra/autoload/extra.vim " loaded when extra command used
opt/fooextra/doc/extra.txt " help for extra.vim
opt/fooextra/doc/tags " help tags
これらのファイルが適切な場所に配置されたら、Vimを開くとプラグインが読み込まれ、プラグインstart
がopt
使用可能になり:packadd
ます。
現在、この機能は既存のプラグインマネージャーを置き換えることができますか?
免責事項:この部分は少し意見があるかもしれません。
この新しいパッケージマネージャーのアプローチは、いくつかのプラグインを含む1つ(または複数)のアーカイブを管理するために作られているため、これまで使用していたプラグインマネージャーのアプローチとは本当に異なると思います。
パッケージマネージャーには、プラグインを1つずつ更新したり、Githubアドレスから自動的にフェッチしたり、有効/無効にするプラグインを選択したりする機能は、すぐに使用できません。
箱から出して使用するのが本当に便利かどうかはわかりません(特に、ネストされたバージョン管理リポジトリを処理するのは苦痛な作業になる可能性があるため)。
また、既存のプラグインを移動して、パッケージマネージャーが必要とする構造を採用し、ファイルシステムから直接管理することも考えられます。この新しい機能を使用するためのラッパーが作成される場合があります。
編集 @Sato Katsuraが提案したように、helptags
コマンドについてのメモがあります。Vim8コミットにより、helptag
ドキュメントに 2行が導入されました。
:helpt[ags] [++t] {dir} Generate the help tags file(s) for directory {dir}. When {dir} is ALL then all "doc" directories in 'runtimepath' will be used.
つまり、新しいパッケージマネージャーは、ユーザーアーカイブに配置されるヘルプタグの生成を容易にします。単一のコマンドで、:helptags ALL
すべてのヘルプタグが生成されます。
:helptags ALL
。
:helptag ALL
私は見て、それを追加します、提案に感謝します!
「プラグインマネージャーを置き換えることができます」を展開するには、
私はかつてVundleを使用していましたが、これは素晴らしいものでしたが、現在では18行程度のbashに置き換えています。
packディレクトリのサブフォルダーを使用して、関連するプラグインをグループ化すると便利です。たとえば、「構文」または「ルビー」。
関連するbashの例を以下に示します。ファイルに配置して実行します。
トピックに関する追加の議論:https : //stories.abletech.nz/get-rid-of-your-vim-plugin-manager-7c8ff742f643#.abnjauzgk
#!/usr/bin/env bash
# This file lives in ~/.vim/pack/install.sh
# Remember to add executable: chmod +x ~/.vim/pack/install.sh
#
# Create new folder in ~/.vim/pack that contains a start folder and cd into it.
#
# Arguments:
# package_group, a string folder name to create and change into.
#
# Examples:
# set_group syntax-highlighting
#
function set_group () {
package_group=$1
path="$HOME/.vim/pack/$package_group/start"
mkdir -p "$path"
cd "$path" || exit
}
# Clone or update a git repo in the current directory.
#
# Arguments:
# repo_url, a URL to the git repo.
#
# Examples:
# package https://github.com/tpope/vim-endwise.git
#
function package () {
repo_url=$1
expected_repo=$(basename "$repo_url" .git)
if [ -d "$expected_repo" ]; then
cd "$expected_repo" || exit
result=$(git pull --force)
echo "$expected_repo: $result"
else
echo "$expected_repo: Installing..."
git clone -q "$repo_url"
fi
}
(
set_group ruby
package https://github.com/tpope/vim-rails.git &
package https://github.com/tpope/vim-rake.git &
package https://github.com/tpope/vim-bundler.git &
package https://github.com/tpope/vim-endwise.git &
wait
) &
(
set_group syntax
package https://github.com/kchmck/vim-coffee-script.git &
package https://github.com/tpope/vim-markdown.git &
package https://github.com/ap/vim-css-color.git &
wait
) &
(
set_group colorschemes
package https://github.com/altercation/vim-colors-solarized.git &
wait
) &
wait
@statoxが提供する回答は非常に説明的ですが、ヘルプファイルを直接読むことができるため、気を散らす可能性のある新しいユーザーにとっては重要です。ポインタで何をする必要があるかを説明したいと思います。
がpack/*/start
提供するいずれかのディレクトリの下にディレクトリを作成しますset packpath
。私はでした~/.config/nvim/pack/*/start
。なお、あなたの代わりにしたい任意のディレクトリ名を使用することができます*
が、あなたは完全にそれを省略することはできません、私は理由を知りません。たとえば、ディレクトリを使用することができる~/.config/nvim/pack/foo/start
か~/.config/nvim/pack/bar/start
ではなく~/.config/nvim/pack/start
。
pack/*/start
ディレクトリに移動し、そこにパッケージを複製します。
:scriptnames
、すべてがロードされているかどうかを確認します。一部のファイルは、フックなどの後にロードされることを意図しているため、すべてのパーツがロードされるわけではないので心配しないでくださいautoload/plugin.vim
。:helptags ALL
すべてのヘルプドキュメントのためのタグを生成します。実行し:helptags {dir}
たディレクトリの下のヘルプドキュメントのためのタグを生成しますdir
。たとえば、プラグインをに配置する場合は~/.config/nvim/pack/foo/plugin_name
、実行します:helptags ~/.config/nvim/pack/foo/plugin_name/doc
。これtags
により、プラグインのdocディレクトリにファイルが生成されます。ディレクトリからプラグインを削除すると、タグファイルはなくなり、vimはヘルプファイルを見つけられないため、docファイルを手動でアンインストールする必要はありません。
package
機能は、最新のプラグインマネージャーと競合するのではなく、最終的にvimballと関連する恐竜に終止符を打つことを目的としています。これはpathogen
、pathogen
のよりわかりにくい機能に依存しない限り、の実行可能な代替物です。たとえば、置き換えようとしませんVundle
。プラグインのコレクションとしてのパッケージの概念はよく考えられており、潜在的に有用ですが、現代のプラグインマネージャーがサポートしていないため、誰も使用しないのではないかと心配しています。また、プラグインマネージャは、誰も使用しないため、サポートしません。これは、鶏と卵の問題です。