Чим відрізняються менеджери плагінів vim?


197

Я дивився на різних менеджерів пакунків на vim, і на той, кого я вирішив використовувати vim-plug, але я побачив таких, як збудник хвороби та вундул, і я, чесно кажучи, не знаю, у чому різниця.

Чи може хтось дати мені короткий огляд відмінностей, щоб я міг вирішити, що найкраще підходить для мене?


Відповіді:


142

vim-plug є приємною альтернативою Vundle, але він робить дещо інше з технічної точки зору, що повинно зробити це швидше ( див. це ). Він має більшість (чи всі?) Рис Вундла.

  • Паралельна процедура поновлення для Vim з будь-яким +ruby, +pythonабо Neovim. Повертається до послідовного режиму за допомогою Vimscript, якщо такої немає.
  • Ледаче завантаження, для швидшого запуску ( див. Це ).
  • Встановити плагіни.
  • Оновіть плагіни.
  • Огляд оновлень / відкат оновлення.
  • Підтримує системи OSX, Linux та UNIX та MS Windows.
  • Гачки після оновлення, наприклад, автоматично перекомпілюйте YCM

Щоб розпочати його використання:

curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

І у вашому vimrc:

call plug#begin()
Plug 'tpope/vim-sensible'

" On-demand loading
Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
call plug#end()

Потім дайте команду

:PlugInstall

щоб встановити перелічені плагіни.


1
Дякую за рекомендацію; Я протистояв навантажувачам до цього, тому що мені подобаються мої завантаження. Єдина не очевидна річ, яку мені довелося дослідити, - :PlugInstallце новий плагін; навіть офіційні документи трохи затьмарюють це.
msw

7
хоча мені подобається vim-plug, пам’ятайте, що він змінює деякі параметри vim, які можуть вас здивувати / заплутати github.com/junegunn/vim-plug/isissue/379
laktak

Для Windows vim має номер версії vim для папки , наприклад vim81 для vim 8.1. На першому кроці при використанні curl переконайтеся, що папка є, ..\vim81\autoload\..а ні ..\.vim\autoload\...
Стівен Якоб

56

Збудник простий. По суті, це просто:

  • автоматичне завантаження плагінів із папки
  • генерувати довідкові теги для цих плагінів

Плюси:

  • мінімалістичний

Мінуси:

  • все інше, зроблене вручну (установка, оновлення, видалення тощо)
  • немає ледачого навантаження

Щоб встановити його, завантажте pathogen.vimна ~/.vim/autoload:

mkdir -p ~/.vim/autoload ~/.vim/bundle && \
curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

І додайте до свого .vimrc:

call pathogen#infect()
call pathogen#helptags() "If you like to get crazy :)

Якщо вам не подобається з глузду, телефонуйте лише :Helptagsтоді, коли вам потрібно.

Потім плагіни додаються до ~/vim/bundle.


20
Щоб зрозуміти, збудник не є менеджером плагінів. Все, що він робить - це керування маршрутом. Це воно. Будь-які плагіни, які ви додаєте до ~ / .vim / bundle (тобто місце за замовчуванням, ви можете змінити це), вони додають файли плагіну до runtimepath vim, щоб вони були доступними. Установка, оновлення та видалення вручну вручну не є справжнім завданням, якщо у вас не встановлено так багато плагінів. Крім того, під час оновлення плагінів ви можете отримати лише підмножину змін, а не оновлювати до останньої версії плагіна, що дає багато контролю.
акшай

1
@AkshayHegde Так, як тільки я почав писати відповідь Vundle, мені довелося повернутися та відредагувати "менеджер плагінів" з цієї відповіді. Друге про кон, тому я продовжую використовувати його замість чого-небудь іншого.
муру

1
vim-пандемія є приємним доповненням до патогена. Він обробляє віддалені сховища за плагінами, залишаючи Pathogen обробляти runtimepath. Це означає, що потрібні два інструменти, але для різних завдань, які "слід" обробляти окремо. Перевага Pathogen + Pandemic в тому, що я вважав найбільш переконливим: не потрібно мати справу з підмодулями git для пакетів.
jalanb

2
Я використовую збудник як мій завантажувач плагінів. Але я використовую підмодулі git для управління версіями окремих плагінів. Тож його мінімалістичний підхід добре працює для мого використання. Як інші менеджери обробляють оновлення версій та плагінів.
Мартін Йорк

2
@JaDogg О, це від README : "Зазвичай, Vim очікує, що ти запустиш: довідкові теги в кожному каталозі з документацією (наприклад,: helptags ~ / .vim / doc). За допомогою патогена.vim є команда: Helptags, яка робить це у кожному каталозі вашого "runtimepath". Якщо ви дійсно хочете зійти з розуму, ви навіть можете викликати довідки у своєму vimrc. Мені не подобається божеволіти ". Я б сказав, якщо у вас багато плагінів, це може трохи уповільнити запуск. І вам дійсно не потрібно запускати його під час кожного запуску, раз для кожної установки / оновлення плагіну повинно вистачити.
муру

43

Вундле складніше. Це менеджер пакунків à la aptабо yumдля плагінів. Це може:

  • пошук в індексі плагіна
  • оновлення плагінів
  • генерувати довідкові теги автоматично
  • зберігайте, але не використовуйте плагіни в папці автозавантаження
  • очистити такі невикористані плагіни
  • Працює в Linux, OSX та MS Windows

Щоб встановити:

git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim

А потім додайте до свого .vimrc:

set nocompatible              " be iMproved, required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" let Vundle manage Vundle, required
Plugin 'gmarik/Vundle.vim'

" more Plugin commands
" ...
call vundle#end()            " required
filetype plugin indent on    " required

Щоб встановити плагін, використовуйте Pluginкоманду в .vimrc(більше прикладів на Github README):

" plugin on Github
Plugin 'tpope/vim-fugitive'
" plugin from http://vim-scripts.org/vim/scripts.html
Plugin 'L9'

А потім дзвоніть :PluginInstallз .vim(або vim +PluginInstall +qall).


NeoBundle README, з яким ви пов’язані, говорить, що проект тепер застарілий на користь github.com/Shougo/dein.vim
Джонатан Хартлі,

@JonathanHartley "темний" - Я думаю, я мав би бачити, що це буде.
муру

13

dein.vim : Після подальшого вирішення цього питання я додам сюди плагін-менеджер, відомий Shougo.

Відповідно до README, плагін має такі залежності:

  • Vim >7.4 or neovim: Хоча оновлення Vim в курсі є доброю справою, для деяких користувачів це може бути проблематично, що попередні версії не підтримуються
  • git: що досить звично для менеджера пакунків
  • rsync: що не так часто, як git

Автор стверджує, що це швидше, ніж NeoBundle. Орієнтир можна знайти на сторінці readme проекту .

Одна оригінальна концепція цього менеджера плагінів є те , що він не дає жодних - або команд, але тільки функції: наприклад, для оновлення плагінів ви не можете використовувати що - щось на зразок :PlugUpdate, ви повинні зателефонувати: :call dein#update(). Якщо чесно, я не знайшов пояснення цього вибору дизайну.

Також хтось створив плагін, який надає ці "відсутні" команди. Я не маю уявлення, чи це гарна ідея, чи це суперечить основній ідеї менеджера плагінів, але автор згадує про це у FAQ щодо файлу doc.

Dein.vim підтримує отримання плагінів від Github (з полегшеним доступом до плагінів з vimscript.org) та з місцевих каталогів.

Менеджер плагінів надає деякі класичні функції, такі як оновлення та відключення плагінів. Це також дозволяє виконувати гачки під час монтажу.

Зауважте, що відповідно до FAQ, схоже, вам доведеться вручну створювати довідкові теги плагінів, які він встановлює.

Цікавим моментом є те, що автор хоче, щоб dein.vim був легким для тестування та обслуговування, тому сховище також містить деякі тестові сценарії.

Нарешті, я б сказав, що цей диспетчер плагінів здається легким і швидким, що цікаво, але я думаю, що він менш зручний для користувачів, ніж, наприклад, vim-plug або Vundle .


Так само, Shougo описує dein.vim як "диспетчер плагінів Vim / Neovim", якщо хтось знає, що це означає, сміливо редагуйте цю відповідь: мені цікаво ;-)


1
"Темне живлення" - це фраза, яку ви збираєтеся знайти у плагінах Vim Shougo, які підтримують / або призначені лише для NeoVim.
Йонсі Соліс

8
Я думаю, що фраза "Темне живлення" походить від "користувачів Light Vim" - тих, хто використовує лише функції за замовчуванням та "Користувачів Dark Vim" - тих, хто намагається використовувати її як IDE або принаймні використовувати багато плагінів і має багато рядків, доданих у їхній файл vimrc (докладніше про це тут, у презентації Shougo- slideshare.net/Shougo/lets-talk-about-neovim - слайд 6)
lewiatan

1
@lewiatan: Дякую, я думаю, ви отримаєте правильну відповідь. (Цікава презентація Shougo btw)
statox

1
@statox Shougo заявляє : "Dein.vim також дозволяє виконувати використання команд на користь виклику функцій, що також може сприяти продуктивності (хоча я не впевнений)."
Олексій Магура

1
@statox, Лульц, ніхто з них, мабуть, не є словами Шуго, тоді я не зрозумів, що це не його блог.
Олексій Магура

13

І Vim 8.0, і Neovim мають власний вбудований менеджер пакунків. У Vim 8.0 створіть такі каталоги:, .vim/pack/*/startде *будь-яке ім’я, яке ви хочете використовувати; напр .vim/pack/jimmy/start.

Клоніруйте свій плагін у стартовий каталог так само, як і в разі використання патогена.

Що стосується Neovim, каталоги дещо довші:

.local/share/nvim/site/pack/*/start. Звідти зробіть те саме, що і для Віма.

Зовсім не потрібно іншого менеджера плагінів.

У Vim чи Neovim, біжіть :h packagesтрохи детальніше. Прочитайте частину про кольори, оскільки вони різні, хоча і не дуже. Вам не потрібні додаткові інструкції у .vimrcваших nvim/init.vimфайлах чи ваших файлах.

Сподіваюся, що це допомагає.


8

Особливо мені подобається VAM за його саморозгортання: все, що вам потрібно, це ваше, .vimrcа потім запустити vim.

Тому вам не потрібна To Installлінія, що використовується більшістю інших менеджерів плагінів (перший крок встановлення самого менеджера плагінів).


6

Що стосується мене, я хочу, щоб менеджер плагінів я використовував для підтримки залежностей.

Причини полягають у тому, що я підтримую декілька плагінів і маю багато взаємозалежностей: загальна бібліотека використовується всіма, двигун шаблонів / фрагментів використовується набором C ++, плагін рефакторингу також використовує бібліотеку ctags-плагін , і так далі. Потреба кінцевого користувача виконати до 10 рядків для установки плагінів, які їх цікавлять, не здається мені гарним рішенням.

Поки що я знаю лише два таких плагіни: vim-addon-manager та NeoBundle . VAM відправив код своєї бази даних на vim-pi після багатьох обмінів у офіційному списку розсилки vim. Ідея полягала в тому, що NeoBundle (і будь-який інший плагін, зацікавлений в управлінні залежностями) може врешті-решт використовувати vim-pi.

Нещодавно я натрапив на vim-аромат, який також справляється із залежностями. За темою він перевіряє версії плагінів, щоб встановити правильну.

Примітка. З моєї початкової відповіді,

  • Розвиток NeoBundle припинився;
  • і хоча vim-pi регулярно оновлює свою базу даних із плагінів на vim.org і що VAM все ще може використовуватися для вираження залежностей, видається псевдонім до бази даних vim-pi більше не представляється можливим: MR / PR вже не об'єднуються

AFAIK, жоден із цих плагінів не клонує / не встановлює / не оновлює плагіни у фоновому режимі / паралельно. Оскільки я не встановлюю нове середовище vim, не оновлюю плагіни, які я встановлював раз на місяць, чесно, мені все одно. Вони, звичайно, оновлюються 'helptags', опікуються 'rtp'тощо.


vim-plugУ README є приклад, що говорить "Групові залежності". Ви пробували це, чи відрізняється він від методів VAM / NeoBundle?
муру

Я пропустив групові залежності в документації на vim-plug. Я бачив, що вони видалили спробу підтримати залежності з бази коду. Щодо групових залежностей, я не бачу, як це може допомогти. Кінцевий користувач не повинен декларувати залежності. Вони повинні бути оголошені авторами плагінів. Якщо ви подивитеся на плагін lh-cpp і придивитесь уважно, то побачите, що залежності не є чимось лінійним. Це орієнтований графік, який повинен бути ациклічним, щоб уникнути проблем.
Люк Ермітт

Поки що я використовую VAM вже більше десяти років, і я цим задоволений. Тим не менше, я використовував vim-аромат, оскільки це набагато простіше інтегруватися з travis - щоб перевірити свої плагіни. І, на жаль, обидва використовують різний синтаксис, щоб оголосити залежності.
Люк Ермітт

1
FYI: Розвиток NeoBundle припинився (з 23 лютого 2016 року). Він рекомендує замість цього його наступника Dein.vim (того ж автора).
Петро В. Морч

3

Більшість з цих менеджерів плагінів чудово справляються з керуванням плагінами, але головні болі залишають vimrcвам. Якщо у вас кілька машин і хочете однаковий конфігуратор по всьому, Vire робить це дуже просто. Вам не потрібні підмодулі git або розшукувати чи додаткові зусилля для налаштування чи міграції.

  • Встановіть Python - саме так написані та потрібні більшість сучасних плагінів Vim
  • pip install vire
  • Розмістіть своє існування vimrcна Github як суть і збережіть його там
  • Якщо в Windows, vire -iщоб встановити останній Vim або (Neovim з -i -n)
  • Видаліть усі існуючі виклики функції плагіна та визначте коментовані виклики, щоб встановити будь-які додатки " Plug 'tpope/vim-unimpaired'
  • vire gistID

Потім запустіть vireбудь-який час, коли ви хочете, щоб ваші vimrcабо плагіни були оновлені або з, -iщоб також оновити додаток.

Vire використовує packфункцію Vim / Neovim для завантаження плагінів. Ви також можете продовжувати використовувати наявний менеджер плагінів, але використовувати Vire для встановлення Vim, the vimrcта самого менеджера плагінів, якщо бажано.


1

Для людей, які хочуть повноцінного менеджера плагінів, що використовують Pathogen, також існує apt-vim. Ви можете встановити його за допомогою curl -sL https://raw.githubusercontent.com/egalpin/apt-vim/master/install.sh | sh (як описано тут: https://www.linuxsecrets.com/1715-vi-editor-tips-trick-and-secrets-into-the-vi-vim-editor-part-ii ). Після встановлення ви можете просто ввести apt-vim installслідом за назвою сховища пакетів, подібним до менеджера програм Ubuntu apt.


1
Це по суті відповідь лише на посилання. Якщо ви можете детальніше розглянути питання про встановлення та використання apt-vim, це було б прийнятно.
Тумблер41

Я оновив його. Дійсно, я думав, що це повинен бути коментар до повідомлення про Патогена, але мені не вистачає балів, щоб коментувати
Меланія День

1
Відсутність посилання на плагін. Також знову плагін, який підказує curl URL |sh. Я ніколи б не запропонував нікому запускати якийсь випадковий код з Інтернету. Дійсно, це поганий навик безпеки.
Крістіан Брабандт

0

Я шукав спосіб використовувати, pathogenале легко оновлювати та зробити його портативним, тому, можливо, bashсценарій може бути корисним (використовуючи vim-plugфункціональність) -

#!/bin/sh

# inspired by https://github.com/thoughtbot/dotfiles/blob/master/hooks/post-up

if [ ! -e "$HOME"/.vim/autoload/pathogen.vim ]; then
  curl -fLo "$HOME"/.vim/autoload/pathogen.vim --create-dirs \
      https://raw.githubusercontent.com/tpope/vim-pathogen/master/autoload/pathogen.vim
fi

if [ -e "$HOME"/.vim/autoload/plug.vim ]; then
  vim -E -s +PlugUpgrade +qa
else
  curl -fLo "$HOME"/.vim/autoload/plug.vim --create-dirs \
      https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
fi
vim -u "$HOME"/.vimrc.bundles +PlugUpdate +PlugClean! +qa

І тоді приклад .vimrc.bundle-

"installed via the Githubs
call plug#begin('~/.vim/bundle')
Plug 'bling/vim-airline'
Plug 'scrooloose/syntastic'
Plug 'scrooloose/nerdtree'
Plug 'tpope/vim-fireplace'
Plug 'vim-scripts/paredit.vim'
" etc

call plug#end()

"disable vim-plug sugar-- actual config should be set via .vimrc
filetype plugin indent off 
syntax on

1
Чи можете ви до цього додати деякі деталі? Основне питання, яке задає ОП, - "Чи може хтось дати мені короткий огляд відмінностей [у менеджерів пакетів], щоб я міг вирішити, що для мене найкраще"? Як ваше подання допомагає відповісти на це? Що ви додаєте до збудника конкретно, щоб його не було? Така річ.
B Layer
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.