Vim 8パッケージ、デフォルトパッケージを上書きするにはどうすればよいですか?


7

Dr. Chipnetrwは、メインのVimディストリビューションに含まれているファイルよりも新しく、頻繁に更新されるため、彼のホームページからインストールしました。

Vim 8以前は、を開いて.vbaを実行することにより、常にVimballのインストール方法を訴えていました:source %。しかし、Vim 8がパッケージメカニズムを追加したので、それを使用することにしました。私のパッケージは次の場所にあります:

~/.vim/pack/packages/start/
~/.vim/pack/packages/opt/

NETRWをパッケージとしてインストールするには、次のようにしました。

cd ~/.vim/pack/packages/start/
wget  http://www.drchip.org/astronaut/vim/vbafiles/netrw.vba.gz
mkdir netrw.vim
gunzip netrw.vba.gz
vim netrw.vba
:UseVimball ~/.vim/pack/packages/start/netrw.vim

そして、それは正しくインストールされました。しかし、ファイルを編集してnetrwコマンドを使用するとき、たとえば、:Lexploreどちらnetrwが使用されているかわかりません。私が行った場合:

vim foo
:scriptnames
  1: /etc/vimrc
  2: /usr/share/vim/vimfiles/archlinux.vim
  3: ~/.vim/vimrc
  (...)
 20: /usr/share/vim/vim80/plugin/netrwPlugin.vim
 21: /usr/share/vim/vim80/plugin/rrhelper.vim
 22: /usr/share/vim/vim80/plugin/spellfile.vim
 23: /usr/share/vim/vim80/plugin/tarPlugin.vim
 24: /usr/share/vim/vim80/plugin/tohtml.vim
 25: /usr/share/vim/vim80/plugin/vimballPlugin.vim
 26: /usr/share/vim/vim80/plugin/zipPlugin.vim
 27: ~/.vim/pack/packages/start/csv.vim/plugin/csv.vim
 28: ~/.vim/pack/packages/start/csv.vim/ftdetect/csv.vim
 29: ~/.vim/pack/packages/start/netrw.vim/plugin/netrwPlugin.vim
 30: /usr/share/vim/vim80/scripts.vim

したがって、ディストリビューションnetrwは最初に実行され(20)、次にインストールされているディストリビューションを実行します(29)。packloadallvimrcに状況の変化を追加すると:

  1: /etc/vimrc
  2: /usr/share/vim/vimfiles/archlinux.vim
  3: ~/.vim/vimrc
  4: ~/.vim/pack/packages/start/csv.vim/plugin/csv.vim
  5: ~/.vim/pack/packages/start/netrw.vim/plugin/netrwPlugin.vim
  (...)
 19: /usr/share/vim/vim80/plugin/gzip.vim
 20: /usr/share/vim/vim80/plugin/logiPat.vim
 21: /usr/share/vim/vim80/plugin/manpager.vim
 22: /usr/share/vim/vim80/plugin/matchparen.vim
 23: /usr/share/vim/vim80/plugin/netrwPlugin.vim

そして、netrw私のディレクトリにインストールされたものが最初に実行されます(5)。それでも、Vimディストリビューションはnetrwまだ稼働しています(23)。

  • netrw私が言うとき、Vimはどちらを使用し:Lexploreますか?新しい(Vimballがインストールされたもの)を使用して:Lexploreいるよう:h pi_netrwですが、新しいドキュメントが:h netrw提供されるのでわかりませんが、古いドキュメント(Vimに付属するドキュメント)が提供されます。

  • 実行:helptags ~/.vim/pack/packages/start/netrw.vim/docしても、上記のドキュメントの問題は解決しません(つまり、新しいものと古いものがある場合があります)。これで私が間違っていることはありますか?

  • Vimは常に$VIM(デフォルト~/.vim)にあるプラグイン/スクリプト/オートロードコマンドを優先します$VIMRUNTIMEか?


1
netrwのバージョンが1つだけインストールされていることを確認する場合は、NetrwCleanプラグインを使用して、netrwのすべてのバージョン(ユーザーディレクトリにあるバージョンと~/.vimシステムディレクトリにあるバージョン)を削除できます/usr/share/vim。その後、Dr。チップのWebサイトから最新バージョンのnetrwを再インストールできます。これで、このバージョンのみが実行されるようになります。
weibeld

回答:


3

あなたが見れnetrwPlugin.vimばあなたは見つけるでしょう:

if &cp || exists("g:loaded_netrwPlugin")
 finish
endif

だからこれをあなたに設定してください.vimrc

let g:loaded_netrwPlugin = 1

両方が同じ変数(g:loaded_netrwPlugin)を使用する場合、ロードできるのは1つだけで、の最後で使用packloadallまたはソースすることで十分です。~/.vim/pack/packages/start/netrw.vim/plugin/netrwPlugin.vim.vimrc


1
しかし、それはまた、netrwをロードしません~/.vim/pack/../netrwか?
Martin Tournoij 2017年

@Carpetsmoker右、更新済み
laktak 2017年

1
どちらも同じ変数を使用しています。さらに、変数をロード中のプラグインのバージョンに設定し、どのファイルが動作しているかをテストできるようにします。私はまだドキュメンテーションタグをどのように修正するのか疑問に思っていますが、それは別の質問でなければなりません。どうもありがとう!
Grochmal
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.