Vim8パッケージ機能とは何ですか。どのように使用すればよいですか?


回答:


74

まず、関連するドキュメントは: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コマンドとともにロードされる「オプションの」プラグインが含まれています。
  • サブフォルダ(pluginautoloaddoc、...)は、プラグインに慣れているものです。

以下にフォルダの要約を示します。

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を開くとプラグインが読み込まれ、プラグインstartopt使用可能になり: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すべてのヘルプタグが生成されます。


11
良い要約。このpackage機能は、最新のプラグインマネージャーと競合するのではなく、最終的にvimballと関連する恐竜に終止符を打つことを目的としています。これはpathogenpathogenのよりわかりにくい機能に依存しない限り、の実行可能な代替物です。たとえば、置き換えようとしませんVundle。プラグインのコレクションとしてのパッケージの概念はよく考えられており、潜在的に有用ですが、現代のプラグインマネージャーがサポートしていないため、誰も使用しないのではないかと心配しています。また、プラグインマネージャは、誰も使用しないため、サポートしません。これは、鶏と卵の問題です。
佐藤桂

2
無関係:についてのメモを追加できます:helptags ALL
佐藤桂

1
@佐藤は、vimballsについてのメモに感謝します:私はそれらを使用したことがないので、私はそれについてはしませんでしたが、あなたがそれについて言及した今、それはかなり明白なようです。「誰もそれを使わない」という点については同意します。私はそれについてはあまり楽観的ではありません。のために:helptag ALL私は見て、それを追加します、提案に感謝します!
statox


4
minpacは、Vim 8(およびNeoVim)の新しいパッケージマネージャーです。Vim 8のパッケージの上に構築されupdate、プラグインまたはcleanそれらにコマンドを提供します(未使用のプラグインを削除します)。ボーナスポイントについては、新しいジョブ制御機能を使用して、複数の更新を並行して実行します。ビルトインパッケージをより良いUXで強化するため、本当に有望だと思います。
ネルストローム

11

「プラグインマネージャーを置き換えることができます」を展開するには、

私はかつて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

4

@statoxが提供する回答は非常に説明的ですが、ヘルプファイルを直接読むことができるため、気を散らす可能性のある新しいユーザーにとっては重要です。ポインタで何をする必要があるかを説明したいと思います。

  1. pack/*/start提供するいずれかのディレクトリの下にディレクトリを作成しますset packpath。私はでした~/.config/nvim/pack/*/startなお、あなたの代わりにしたい任意のディレクトリ名を使用することができます*が、あなたは完全にそれを省略することはできません、私は理由を知りません。たとえば、ディレクトリを使用することができる~/.config/nvim/pack/foo/start~/.config/nvim/pack/bar/startではなく~/.config/nvim/pack/start

  2. pack/*/startディレクトリに移動し、そこにパッケージを複製します。

  3. n / vimを起動し:scriptnames、すべてがロードされているかどうかを確認します。一部のファイルは、フックなどの後にロードされることを意図しているため、すべてのパーツがロードされるわけではないので心配しないでくださいautoload/plugin.vim
  4. アンインストールするには、パッケージを複製したディレクトリを削除するだけです。他に何もする必要はありません。
  5. やる:helptags ALLすべてのヘルプドキュメントのためのタグを生成します。実行し:helptags {dir}たディレクトリの下のヘルプドキュメントのためのタグを生成しますdir。たとえば、プラグインをに配置する場合は~/.config/nvim/pack/foo/plugin_name、実行します:helptags ~/.config/nvim/pack/foo/plugin_name/doc。これtagsにより、プラグインのdocディレクトリにファイルが生成されます。ディレクトリからプラグインを削除すると、タグファイルはなくなり、vimはヘルプファイルを見つけられないため、docファイルを手動でアンインストールする必要はありません。

2

新しい形式はPathogenに相当すると考えることができるため、必要なプラグインをダウンロードできるマネージャー用のスペースがまだあります。この新しいパック形式を活用する新しいプラグインマネージャーがいくつかありますが、管理するという頭痛の種を残すため、私はまだVirevimrcを作成しました。複数のマシンがあり、同じ構成を使用する場合、Vireを使用すると非常に簡単になります。


複数のWINDOWSマシンがあり、同じ構成が必要な場合... FTFY
Dan J.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.