Vim 8-Pakete, wie überschreibe ich ein Standardpaket?


7

Ich habe Dr. Chipsnetrw von seiner Homepage installiert , da sie neuer ist und häufiger aktualisiert wird als die Dateien, die Teil der Haupt-Vim-Distribution sind.

Vor Vim 8 habe ich immer die Vimball-Installationsmethode verklagt, indem ich die geöffnet .vbaund ausgeführt habe :source %. Aber jetzt, da Vim 8 den Paketmechanismus hinzugefügt hat, habe ich mich dafür entschieden. Ich habe meine Pakete unter:

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

Um NETRW als Paket zu installieren, habe ich Folgendes getan:

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

Und es wurde richtig installiert. Aber jetzt, wenn ich eine Datei bearbeite und beispielsweise einen netrwBefehl verwende, :Lexplorebin ich mir nicht sicher, welcher netrwverwendet wird. Wenn ich mache:

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

Die Distribution wird also netrwzuerst ausgeführt (20) und dann die installierte (29). Wenn ich packloadallzu meiner hinzufüge , vimrcändert sich die Situation:

  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

Und das netrwin meinem Verzeichnis installierte läuft zuerst (5). Die Vim-Distribution netrwläuft jedoch weiterhin (23)!

  • Was netrwwird Vim verwenden, wenn ich es tue :Lexplore? Es scheint das neue (von Vimball installierte) zu verwenden, :Lexploreaber ich bin mir nicht sicher, da :h pi_netrwes mir das neue Dokument :h netrwgibt , aber mir die alte Dokumentation (die mit Vim geliefert wird).

  • Das Ausführen :helptags ~/.vim/pack/packages/start/netrw.vim/dochilft bei dem oben genannten Dokumentationsproblem nicht (dh ich bekomme manchmal das neue und manchmal das alte). Gibt es etwas, was ich damit falsch mache?

  • Bevorzugt Vim immer Plugins / Skripte / Autoload-Befehle, die in $VIM(Standard ~/.vim) über denen in stehen $VIMRUNTIME?


1
Wenn Sie sicherstellen möchten, dass nur eine Version von netrw installiert ist, können Sie mit dem NetrwClean- Plugin alle Versionen von netrw entfernen (die in Ihrem Benutzerverzeichnis ~/.vimund die im Systemverzeichnis /usr/share/vim). Dann können Sie die neueste Version von netrw von der Website von Dr. Chip neu installieren, und Sie sind sicher, dass jetzt nur diese Version ausgeführt wird.
weibeld

Antworten:


3

Wenn Sie sich ansehen, werden netrwPlugin.vimSie finden:

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

Stellen Sie dies einfach in Ihr .vimrc:

let g:loaded_netrwPlugin = 1

Wenn beide dieselbe Variable ( g:loaded_netrwPlugin) verwenden, kann nur eine geladen werden, und es reicht aus, sie am Ende von entweder zu verwenden packloadalloder als Quelle ~/.vim/pack/packages/start/netrw.vim/plugin/netrwPlugin.vimzu verwenden .vimrc.


1
Aber dann wird es auch nicht das netrw von laden ~/.vim/pack/../netrw?
Martin Tournoij

@ Carpetsmoker rechts, aktualisiert
Laktak

1
Sie haben Recht, beide verwenden dieselbe Variable. Darüber hinaus setzen sie die Variable auf die Version des zu ladenden Plugins, mit der getestet werden kann, welche Datei in Betrieb ist. Ich frage mich immer noch, wie ich die Dokumentations-Tags repariere, aber das sollte eine andere Frage sein. Danke vielmals!
gro♀
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.