Gói Vim 8, làm cách nào để ghi đè gói mặc định?


7

Tôi đã cài đặt Dr. Chipnetrw từ trang chủ của anh ấy, vì nó mới hơn và thường xuyên được cập nhật hơn các tệp là một phần của bản phân phối Vim chính.

Trước Vim 8 tôi luôn kiện phương thức cài đặt Vimball, bằng cách mở .vbavà chạy :source %. Nhưng, bây giờ Vim 8 đã thêm cơ chế gói, tôi quyết định sử dụng nó. Tôi có các gói của tôi dưới:

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

Vì vậy, để cài đặt NETRW như một gói tôi đã làm:

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

Và nó được cài đặt chính xác. Nhưng bây giờ khi tôi chỉnh sửa một tập tin và sử dụng một netrwlệnh, :Lexploretôi không chắc cái nào netrwđang được sử dụng. Nếu tôi làm:

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

Vì vậy, bản phân phối netrwchạy trước (20) và sau đó chạy bản đã cài đặt (29). Nếu tôi thêm packloadallvào vimrctình hình của tôi thay đổi:

  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

Và cài đặt netrwtrong thư mục của tôi chạy đầu tiên (5). Tuy nhiên, bản phân phối Vim netrwvẫn chạy (23)!

  • netrwsẽ Vim sử dụng khi tôi làm, nói, :Lexplore? Nó dường như sử dụng cái mới (Vimball đã cài đặt) :Lexplorenhưng tôi không chắc vì đã :h pi_netrwđưa cho tôi tài liệu mới, nhưng :h netrwđưa cho tôi tài liệu cũ (tài liệu đi kèm với Vim).

  • Chạy :helptags ~/.vim/pack/packages/start/netrw.vim/dockhông giúp ích gì cho vấn đề tài liệu ở trên (tức là tôi nhận được đôi khi cái mới và đôi khi cái cũ). Có điều gì đó tôi đang làm sai với điều này?

  • Vim có luôn ưu tiên cho các lệnh bổ trợ / script / autoload nằm trong $VIM(mặc định ~/.vim) phía trên các lệnh trong $VIMRUNTIMEkhông?


1
Nếu bạn muốn chắc chắn rằng bạn chỉ có một phiên bản netrw được cài đặt, bạn có thể sử dụng plugin NetrwClean để xóa tất cả các phiên bản của netrw (một trong thư mục người dùng của bạn ~/.vimvà một trong thư mục hệ thống /usr/share/vim). Sau đó, bạn có thể cài đặt lại phiên bản mới nhất của netrw từ trang web của Dr. Chip và bạn chắc chắn rằng chỉ có phiên bản này mới được chạy ngay bây giờ.
weibeld

Câu trả lời:


3

Nếu bạn nhìn vào netrwPlugin.vimbạn sẽ tìm thấy:

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

Vì vậy, chỉ cần đặt điều này trong .vimrc:

let g:loaded_netrwPlugin = 1

Nếu cả hai đều sử dụng cùng một biến ( g:loaded_netrwPlugin) thì chúng chỉ có thể được tải và nó đủ để sử dụng packloadallhoặc nguồn ~/.vim/pack/packages/start/netrw.vim/plugin/netrwPlugin.vimở cuối của bạn .vimrc.


1
Nhưng sau đó nó cũng sẽ không tải netrw từ ~/.vim/pack/../netrwđâu?
Martin Tournoij

@Carpetsmoker đúng, được cập nhật
laktak

1
Bạn nói đúng, cả hai đều sử dụng cùng một biến. Và hơn nữa, họ đặt biến thành phiên bản của plugin đang được tải, cho phép kiểm tra tệp nào đang hoạt động. Tôi vẫn tự hỏi làm thế nào tôi sửa các thẻ tài liệu nhưng đó phải là một câu hỏi khác. Cảm ơn nhiều!
ngày
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.