Pacotes do Vim 8, como sobrescrever um pacote padrão?


7

Instalei o Dr. Chip'snetrw em sua página inicial, pois é mais novo e atualizado com mais freqüência do que os arquivos que fazem parte da distribuição principal do Vim.

Antes do Vim 8, eu sempre processava o método de instalação do Vimball, abrindo .vbae executando :source %. Mas, agora que o Vim 8 adicionou o mecanismo de pacotes, decidi usá-lo. Eu tenho meus pacotes em:

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

Então, para instalar o NETRW como um pacote, eu fiz:

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

E foi instalado corretamente. Mas agora, quando edito um arquivo e uso um netrwcomando, digamos, :Lexplorenão tenho certeza de qual netrwestá sendo usado. Se eu fizer:

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

Portanto, a distribuição netrwé executada primeiro (20) e, em seguida, executada (29). Se eu adicionar packloadallao meu, vimrca situação muda:

  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

E o instalado netrwno meu diretório é executado primeiro (5). No entanto, a distribuição Vim netrwainda é executada (23)!

  • O netrwque o Vim usará quando eu disser :Lexplore? Parece usar o novo (o Vimball instalado), :Lexploremas não tenho certeza, pois :h pi_netrwme fornece o novo documento, mas :h netrwa documentação antiga (a que acompanha o Vim).

  • A execução :helptags ~/.vim/pack/packages/start/netrw.vim/docnão ajuda com o problema de documentação acima (ou seja, às vezes recebo o novo e às vezes o antigo). Existe algo que estou fazendo errado com isso?

  • O Vim sempre dá preferência aos comandos plugins / scripts / autoload que estão $VIM(padrão ~/.vim) acima dos comandos $VIMRUNTIME?


11
Se você quiser ter certeza de que possui apenas uma versão do netrw instalada, poderá usar o plug-in NetrwClean para remover todas as versões do netrw (a que está no diretório de usuários ~/.vime a que está no diretório do sistema /usr/share/vim). Em seguida, você pode reinstalar a versão mais recente do netrw no site do Dr. Chip e você tem certeza de que apenas esta versão estará em execução agora.
weibeld

Respostas:


3

Se você olhar, netrwPlugin.vimencontrará:

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

Então, basta definir isso no seu .vimrc:

let g:loaded_netrwPlugin = 1

Se os dois usarem a mesma variável ( g:loaded_netrwPlugin), apenas um poderá ser carregado e será suficiente usar packloadallou fonte ~/.vim/pack/packages/start/netrw.vim/plugin/netrwPlugin.vimno final da sua .vimrc.


11
Mas também não carregará o netrw ~/.vim/pack/../netrw?
Martin Tournoij 2/03

@Carpetsmoker direito, atualizado
laktak 2/17/17

11
Você está certo, ambos usam a mesma variável. E ainda mais, eles definem a variável para a versão do plug-in que está sendo carregado, o que permite testar qual arquivo está em operação. Ainda me pergunto como conserto as tags de documentação, mas isso deve ser outra pergunta. Muito Obrigado!
grochmal
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.