Qual è la differenza tra i gestori dei plugin di vim?


Risposte:


142

vim-plug è una bella alternativa a Vundle, fa cose un po 'diverse da un punto di vista tecnico che dovrebbe renderlo più veloce ( vedi questo ). Ha la maggior parte (o tutte?) Delle funzionalità di Vundle.

  • Procedura di aggiornamento parallelo per VIM con qualsiasi di +ruby, +pythono Neovim. Ritorna alla modalità sequenziale usando Vimscript se nessuno è disponibile.
  • Caricamento lento, per un avvio più rapido ( vedi questo ).
  • Installa plugin.
  • Aggiorna plugin.
  • Aggiornamenti di revisione / rollback.
  • Supporta sistemi OSX, Linux e UNIX e MS Windows.
  • Ganci post-aggiornamento, ad es. Ricompilazione automatica di YCM

Per iniziare a usarlo:

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

E nel tuo vimrc:

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

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

Quindi dare il comando

:PlugInstall

per installare i plugin elencati.


1
Grazie per la raccomandazione; Prima ho resistito ai caricatori perché mi piacciono i miei tempi di caricamento zippy. L'unica cosa non ovvia che ho dovuto ricercare era :PlugInstallsu un nuovo plugin; anche i documenti ufficiali lo oscurano un po '.
msw,

7
mentre mi piace vim-plug,
tieni

Per Windows, vim ha un numero di versione della cartella vim , come vim81 per vim 8.1. Nel primo passaggio quando si utilizza l'arricciatura assicurarsi che la cartella sia ..\vim81\autoload\..e non ..\.vim\autoload\...
Stephen Jacob,

56

L'agente patogeno è semplice. Fondamentalmente fa solo:

  • plugin di caricamento automatico da una cartella
  • generare tag di aiuto per questi plugin

Professionisti:

  • minimalista

Contro:

  • tutto il resto fatto manualmente (installazione, aggiornamento, rimozione, ecc.)
  • nessun caricamento lento

Per installarlo scarica pathogen.vimsu ~/.vim/autoload:

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

E aggiungi al tuo .vimrc:

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

Se non ti piace impazzire, chiama solo :Helptagsquando è necessario.

I plugin vengono quindi aggiunti a ~/vim/bundle.


20
Per essere chiari, il patogeno non è un gestore di plugin. Tutto ciò che fa è gestire il runtimepath. Questo è tutto. Qualsiasi plug-in che aggiungi a ~ / .vim / bundle (ovvero la posizione predefinita, puoi cambiarlo), aggiunge i file del plug-in al runtimepath di vim in modo che siano accessibili. L'installazione manuale, l'aggiornamento, la rimozione non è in realtà un problema se non hai installato molti plugin. Inoltre, quando si aggiornano i plug-in, è possibile scegliere di recuperare solo un sottoinsieme delle modifiche e non aggiornare all'ultima versione di un plug-in, il che offre un notevole controllo.
akshay,

1
@AkshayHegde Sì, una volta che ho iniziato a scrivere la risposta di Vundle, sono dovuto tornare indietro e modificare "gestore plugin" da questa risposta. Distaccato dalla truffa, ecco perché continuo a usarlo invece di qualsiasi altra cosa.
muru,

1
vim-pandemic è una bella aggiunta a Pathogen. Gestisce i repository remoti dietro i plugin, lasciando Pathogen a gestire il runtimepath. Ciò significa che sono necessari due strumenti, ma per compiti diversi che "dovrebbero" essere gestiti separatamente. Il vantaggio di Pathogen + Pandemic che ho trovato più convincente: non è necessario gestire i sottomoduli git per i bundle.
jalanb,

2
Uso il patogeno come caricatore di plugin. Ma io uso i sottomoduli git per controllare le versioni dei singoli plugin. Quindi il suo approccio minimalista funziona bene per il mio caso d'uso. In che modo gli altri gestori gestiscono gli aggiornamenti di versione e plug-in.
Martin York,

2
@JaDogg Oh, proviene dal file README : "Normalmente, Vim si aspetta che tu esegua: helptags su ogni directory con documentazione (ad esempio, helptags ~ / .vim / doc). Fornito con pathogen.vim è un comando: Helptags che lo fa su ogni directory nel tuo 'runtimepath'. Se vuoi davvero impazzire, potresti persino invocare Helptags nel tuo vimrc. Non mi piace impazzire. " Direi che se hai molti plugin, questo potrebbe rallentare un po 'l'avvio. E davvero non è necessario eseguirlo ad ogni avvio, una volta per ogni installazione / aggiornamento del plugin dovrebbe essere sufficiente.
muru,

43

Vundle è più complesso. È un gestore di pacchetti à la apto yumper plugin. Può:

  • cerca un indice plugin
  • aggiorna plugin
  • generare automaticamente helptag
  • conservare, ma non utilizzare, i plugin nella cartella di caricamento automatico
  • ripulire tali plugin non utilizzati
  • Funziona su Linux, OSX e MS Windows

Installare:

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

E poi aggiungi al tuo .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

Per installare un plugin, usa il Plugincomando in .vimrc(altri esempi su README di Github):

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

E poi chiama :PluginInstallda .vim(o vim +PluginInstall +qall).


Il file README di NeoBundle a cui hai collegato afferma che il progetto è ora deprecato a favore di github.com/Shougo/dein.vim
Jonathan Hartley,

@JonathanHartley il potere "oscuro"? Immagino che avrei dovuto vederlo arrivare.
Muru,

13

dein.vim : A seguito di questa domanda , aggiungerò qui il gestore di plugin creato dal noto Shougo.

Secondo il README, il plugin ha le seguenti dipendenze:

  • Vim >7.4 or neovim: sebbene l'aggiornamento di Vim sia positivo, per alcuni utenti potrebbe essere problematico che le versioni precedenti non siano supportate
  • git: che è abbastanza comune per un gestore di pacchetti
  • rsync: che non è così comune come git

L'autore afferma che è più veloce di NeoBundle. Un benchmark può essere trovato nella pagina readme del progetto .

Un concetto originale di questo plugin manager è che non fornisce alcun comando, ma solo le funzioni: ad esempio, per aggiornare i plugin non è possibile usare qualcosa di simile :PlugUpdate, dovrete chiamare: :call dein#update(). Ad essere sincero, non ho trovato una spiegazione di questa scelta progettuale.

Inoltre, qualcuno ha creato un plugin che fornisce questi comandi "mancanti". Non ho idea se questa è una buona idea o se ciò è contrario all'idea principale del gestore plugin, ma l'autore lo menziona nelle FAQ del file doc.

Dein.vim supporta l'ottenimento di plug-in da Github (con un accesso facilitato ai plug-in da vimscript.org) e dalle directory locali.

Il gestore plug-in offre alcune funzionalità classiche come l'aggiornamento e la disabilitazione dei plug-in. Consente inoltre l'esecuzione di ganci al momento dell'installazione.

Nota che, in base alle FAQ, sembra che tu debba creare manualmente gli helptag dei plugin che installa.

Un punto interessante è che l'autore vuole che dein.vim sia facile da testare e mantenere, quindi il repository contiene anche alcuni script di test.

Infine, direi che questo gestore di plugin sembra essere progettato per essere leggero e veloce, il che è interessante, ma penso che sia meno user-friendly di vim-plug o Vundle , per esempio.


Oh, inoltre, Shougo descrive dein.vim come "gestore di plugin Vim / Neovim con Dark Power" se qualcuno sa cosa significa, sentiti libero di modificare questa risposta: sono curioso ;-)


1
"Dark powered" è una frase che troverai nei plugin vim di Shougo che hanno supporto / o sono solo per NeoVim.
Yonsy Solis,

8
Penso che la frase "Dark powered" provenga dagli "utenti di Light Vim" - quelli che usano solo funzionalità predefinite e "Utenti di Dark Vim" - quelli che cercano di usarlo come IDE o almeno usano molti plugin e hanno molti di righe aggiunte al loro file vimrc (ulteriori informazioni qui nella presentazione di Shougo- slideshare.net/Shougo/lets-talk-about-neovim - slide 6)
lewiatan,

1
@lewiatan: Grazie, penso che tu abbia la risposta giusta. (Interessante presentazione di Shougo tra l'altro)
statox

1
@statox Shougo afferma : "Dein.vim elimina anche l'uso dei comandi a favore della funzione di chiamata, che può anche contribuire alle prestazioni (non sono sicuro, però)."
Alexej Magura,

1
@statox, Lulz, no quelli probabilmente non sono le parole di Shougo, quindi non mi ero reso conto che non era il suo blog.
Alexej Magura,

13

Sia Vim 8.0 che Neovim hanno il loro gestore di pacchetti integrato. In Vim 8.0 creare le seguenti directory:, .vim/pack/*/startdove si *trova qualsiasi nome che si desidera utilizzare; es .vim/pack/jimmy/start.

Clona il tuo plug-in nella directory di avvio come faresti con un patogeno.

Con Neovim, le directory sono un po 'più lunghe:

.local/share/nvim/site/pack/*/start. Da lì fai lo stesso che per Vim.

Non è necessario alcun altro gestore di plug-in.

In Vim o Neovim, corri :h packagesper un po 'più di dettagli. Leggi la parte sui colori perché sono diversi, anche se non molto. Non hai bisogno di ulteriori istruzioni nel tuo .vimrco nei tuoi nvim/init.vimfile.

Spero che aiuti.


8

Mi piace soprattutto VAM per la sua auto-distribuzione: tutto ciò di cui hai bisogno è il tuo .vimrce quindi avviare vim.

Quindi non hai bisogno della To Installlinea usata dalla maggior parte degli altri gestori di plugin (il primo passo per installare il gestore di plugin stesso).


6

Per quanto mi riguarda, voglio che il gestore plug-in che utilizzo supporti le dipendenze.

Le ragioni sono che sto mantenendo diversi plugin e ho molte interdipendenze: una libreria generica è usata da tutti, il motore template / snippet è usato dalla suite C ++, il plugin refactoring usa anche il plugin-libreria ctags , e così via. Richiedere all'utente finale di eseguire fino a 10 righe per installare i plugin a cui sono interessati non mi sembra una buona soluzione.

Finora, conosco solo due di questi plugin: vim-addon-manager e NeoBundle . VAM ha inoltrato il suo codice di database a vim-pi dopo molti scambi sulla mailing list ufficiale di vim. L'idea era che NeoBundle (e qualsiasi altro plugin interessato alla gestione delle dipendenze) alla fine potesse sfruttare vim-pi.

Di recente mi sono imbattuto in vim-flavour che gestisce anche le dipendenze. In materia controlla le versioni dei plugin per installare quella giusta.

Nota: dalla mia risposta iniziale,

  • Lo sviluppo di NeoBundle si è interrotto;
  • e mentre vim-pi aggiorna regolarmente il suo database dai plugin su vim.org e che VAM può ancora essere usato per esprimere dipendenze, non sembra più possibile aggiungere alias al database vim-pi: MR / PR non vengono più uniti

AFAIK, nessuno di questi plugin clona / installa / aggiorna plugin in background / parallelo. Dato che non installo un nuovo ambiente vim, né aggiorno i plugin che ho installato una volta al mese, onestamente, non mi interessa. Ovviamente si aggiornano 'helptags', si prendono cura di 'rtp'e così via.


vim-plugIl README ha un esempio che dice "dipendenze di gruppo". Ci hai provato o differisce dai metodi di VAM / NeoBundle?
muru,

Ho perso le dipendenze di gruppo nella documentazione di vim-plug. Tuttavia, ho visto che hanno rimosso il loro tentativo di supportare le dipendenze dalla base di codice. Per quanto riguarda le dipendenze di gruppo, non vedo come possa essere d'aiuto. Le dipendenze non devono essere dichiarate dall'utente finale. Dovrebbero essere dichiarati dagli autori dei plugin. Se guardi dal plugin lh-cpp e guardi da vicino vedrai che le dipendenze non sono qualcosa di lineare. È un grafico orientato, che deve essere aciclico per evitare problemi.
Luc Hermitte,

Finora uso VAM da più di un decennio e ne sono felice. Tuttavia, ho usato vim-flavour in quanto è molto più semplice integrarlo da travis, al fine di testare i miei plugin. E sfortunatamente, entrambi usano una sintassi diversa per dichiarare le dipendenze.
Luc Hermitte,

1
FYI: lo sviluppo di NeoBundle si è interrotto (dal 23 febbraio 2016). Raccomanda invece il suo successore Dein.vim (dello stesso autore).
Peter V. Mørch,

3

La maggior parte di questi gestori di plugin fanno un ottimo lavoro nella gestione dei plugin, ma lasciano il mal di testa nel gestirlo vimrc. Se hai più macchine e desideri la stessa configurazione, Vire rende tutto più semplice. Non hai bisogno di git o capire i sottomoduli o qualsiasi sforzo extra per ottenere l'installazione o migrare.

  • Installa Python, che è quello che la maggior parte dei plug-in Vim moderni sono scritti e richiesti comunque
  • pip install vire
  • Pubblica il tuo esistente vimrcsu Github come sostanza e conservalo lì
  • Se su Windows, vire -iinstallare l'ultimo Vim o (Neovim con -i -n)
  • Rimuovere eventuali chiamate di funzione plug-in esistenti e definire le chiamate commentate per installare eventuali plug-in " Plug 'tpope/vim-unimpaired'
  • vire gistID

Quindi esegui vireogni volta che vuoi che il tuo vimrco i plugin vengano aggiornati o con -iper aggiornare anche l'app.

Vire sfrutta la funzionalità di Vim / Neovim packper caricare plugin. Puoi anche continuare a utilizzare il tuo gestore plug-in esistente, ma usa Vire per installare solo Vim, the vimrce il gestore plug-in stesso, se preferisci.


1

Per le persone che desiderano un gestore plug-in completo che utilizza Pathogen, esiste anche apt-vim. Puoi installarlo con curl -sL https://raw.githubusercontent.com/egalpin/apt-vim/master/install.sh | sh (come descritto qui: https://www.linuxsecrets.com/1715-vi-editor-tips-trick-and-secrets-into-the-vi-vim-editor-part-ii ). Una volta installato, puoi semplicemente digitare apt-vim installseguito dal nome del repository dei pacchetti, simile al gestore dei pacchetti apt di Ubuntu.


1
Questa è essenzialmente una risposta solo link. Se potessi entrare in qualche dettaglio in più su come installare e usare apt-vim, sarebbe accettabile.
Tumbler41

L'ho aggiornato. Davvero ho pensato che dovrebbe essere un commento sul post su Pathogen, ma non ho abbastanza punti per fare commenti
Melanie Day

1
Link mancante al plug-in. Anche in questo caso un plugin che suggerisce curl URL |sh. Non consiglierei mai a nessuno di eseguire un codice casuale da Internet. Davvero è un brutto habbit di sicurezza.
Christian Brabandt,

0

Stavo cercando un modo per usarlo pathogenma aggiornarlo facilmente e renderlo portatile, quindi forse uno bashscript potrebbe essere utile (usando la vim-plugfunzionalità) -

#!/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

E poi un esempio .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
Puoi aggiungere alcuni dettagli a questo? La domanda principale che OP pone è "Qualcuno può darmi una breve panoramica delle differenze [nei gestori di pacchetti] in modo che io possa decidere quale funziona meglio per me"? In che modo la tua richiesta ti aiuta a rispondere? Cosa stai aggiungendo al patogeno specificamente che non ha? Quel genere di cose.
B Layer,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.