Quelle est la différence entre les gestionnaires de plugins vim?


197

J'ai examiné les différents gestionnaires de paquets pour vim et celui pour lequel j'ai décidé d'utiliser vim-plug, mais j'en ai vu d'autres comme pathogen et vundle et honnêtement, je ne sais pas quelle est la différence.

Quelqu'un peut-il me donner un bref aperçu des différences afin que je puisse choisir celle qui me convient le mieux?


Réponses:


142

vim-plug est une bonne alternative à Vundle, il fait les choses un peu différemment d’un point de vue technique, ce qui devrait le rendre plus rapide ( voir ci- dessous ). Il possède la plupart (ou la totalité?) Des fonctionnalités de Vundle.

  • Procédure de mise à jour en parallèle pour VIM avec l' une des +ruby, +pythonou Neovim. Retombe en mode séquentiel à l'aide de Vimscript si aucun n'est disponible.
  • Chargement paresseux, pour un démarrage plus rapide ( voir cela ).
  • Installez les plugins.
  • Mettre à jour les plugins.
  • Revoir / annuler les mises à jour.
  • Prend en charge les systèmes OSX, Linux et UNIX et MS Windows.
  • Crochets de post-mise à jour, par exemple, recompiler automatiquement YCM

Pour commencer à l'utiliser:

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

Et dans votre vimrc:

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

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

Puis donnez la commande

:PlugInstall

installer les plugins listés.


1
Merci pour la recommandation; J'ai résisté aux chargeurs avant cela parce que j'aime mes temps de chargement zippy. La seule chose non évidente que je devais rechercher était :PlugInstallun nouveau plugin; même les documentaires officiels obscurcissent cela un peu.
MSW

7
Bien que j'aime vim-plug, sachez que cela change certaines valeurs par défaut de vim que vous pourriez trouver surprenantes / déroutantes. github.com/junegunn/vim-plug/issues/379
laktak

Pour Windows, vim a un numéro de version de dossier vim , tel que vim81 pour vim 8.1. Dans la première étape lors de l' utilisation curl assurer le dossier est ..\vim81\autoload\..et non ..\.vim\autoload\...
Stephen Jacob

56

L'agent pathogène est simple. Essentiellement, cela ne fait que:

  • chargement automatique des plugins depuis un dossier
  • générer des tags d'aide pour ces plugins

Avantages:

  • minimaliste

Les inconvénients:

  • tout le reste fait manuellement (installation, mise à jour, suppression, etc.)
  • pas de chargement paresseux

Pour l'installer, téléchargez-le pathogen.vimsur ~/.vim/autoload:

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

Et ajoutez à votre .vimrc:

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

Si vous n'aimez pas devenir fou, appelez uniquement :Helptagslorsque vous en avez besoin.

Les plugins sont ensuite ajoutés à ~/vim/bundle.


20
Pour être clair, pathogen n’est pas un gestionnaire de plug-ins. Tout ce qu'il fait est de gérer le runtimepath. C'est ça. Tous les plugins que vous ajoutez à ~ / .vim / bundle (c’est-à-dire l’emplacement par défaut, vous pouvez le changer), les fichiers du plugin sont ajoutés au chemin runtimepath de vim pour qu’ils soient accessibles. L'installation manuelle, la mise à jour, la suppression n'est pas vraiment un inconvénient si vous n'avez pas installé autant de plugins. De plus, lors de la mise à jour des plugins, vous pouvez choisir de ne récupérer qu'un sous-ensemble des modifications et de ne pas mettre à jour la dernière version d'un plugin, ce qui vous donne beaucoup de contrôle.
akshay

1
@AkshayHegde Oui, une fois que j'ai commencé à rédiger la réponse de Vundle, j'ai dû revenir en arrière et supprimer le "gestionnaire de plug-in" de cette réponse. Appuyé sur le problème, c'est pourquoi je continue à l'utiliser au lieu de rien d'autre.
Muru

1
vim-pandemic est une belle addition à Pathogen. Il gère les référentiels distants situés derrière les plug-ins, laissant Pathogen gérer le runtimepath. Cela signifie que l'on a besoin de deux outils, mais que pour des tâches disparates, "devrait" être traité séparément. L’avantage de Pathogen + Pandemic que j’ai trouvé le plus convaincant: il n’est pas nécessaire de traiter avec des sous-modules git pour les bundles.
Jalanb

2
J'utilise un agent pathogène comme chargeur de plugins. Mais j’utilise des sous-modules git pour contrôler les versions des différents plugins. Donc, son approche minimaliste fonctionne bien pour mon cas d'utilisation. Comment les autres gestionnaires gèrent-ils les mises à jour de version et de plug-in?
Martin York

2
@JaDogg Oh, ça vient du README : "Normalement, Vim attend que vous exécutiez: helptags sur chaque répertoire avec la documentation (par exemple,: helptags ~ / .vim / doc). Fourni avec pathogen.vim est une commande: Helptags qui le fait sur chaque répertoire de votre 'runtimepath'. Si vous voulez vraiment devenir fou, vous pouvez même invoquer Helptags dans votre vimrc. Je n'aime pas devenir fou. " Je dirais que si vous avez beaucoup de plugins, cela pourrait ralentir un peu le démarrage. Et vous n'avez vraiment pas besoin de l'exécuter à chaque démarrage, une installation pour chaque plugin devrait suffire.
Muru

43

Vundle est plus complexe. C'est un gestionnaire de paquets à la aptou yumpour les plugins. Ça peut:

  • rechercher un index de plugin
  • mise à jour des plugins
  • générer des helptags automatiquement
  • garder, mais ne pas utiliser, les plugins dans le dossier autoload
  • nettoyer ces plugins inutilisés
  • Fonctionne sous Linux, OSX et MS Windows

À installer:

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

Et puis ajoutez à votre .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

Pour installer un plugin, utilisez la Plugincommande dans .vimrc(plus d’exemples sur le fichier README de Github):

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

Et puis appelez :PluginInstallde .vim(ou vim +PluginInstall +qall).


Le fichier README de NeoBundle auquel vous avez accédé indique que ce projet est désormais obsolète au profit de github.com/Shougo/dein.vim
Jonathan Hartley

@ JonathanHartley le "sombre" à la puissance? Je suppose que j'aurais dû voir cela venir.
Muru

13

dein.vim : Pour faire suite à cette question , je vais ajouter ici le gestionnaire de plug-ins créé par le célèbre Shougo.

Selon le fichier README, le plugin a les dépendances suivantes:

  • Vim >7.4 or neovim: bien que maintenir Vim à jour soit une bonne chose, il peut être problématique pour certains utilisateurs que les versions précédentes ne soient pas prises en charge.
  • git: ce qui est assez commun pour un gestionnaire de paquets
  • rsync: qui n'est pas aussi commun que git

L'auteur affirme que c'est plus rapide que NeoBundle. Un repère se trouve sur la page lisez-moi du projet .

Un concept original de ce gestionnaire de plug - in est qu'il ne fournit pas de commandes, mais seulement des fonctions: par exemple, pour mettre à jour vos plugins que vous ne pouvez pas utiliser quelque chose comme :PlugUpdate, vous devez appeler: :call dein#update(). Pour être honnête, je n'ai pas trouvé d'explication sur ce choix de design.

En outre, quelqu'un a créé un plugin qui fournit ces commandes "manquantes". Je ne sais pas si c'est une bonne idée ou si cela va à l'encontre de l'idée principale du gestionnaire de plugins, mais l'auteur le mentionne dans la FAQ du fichier doc.

Dein.vim permet d’obtenir des plugins de Github (avec un accès facilité aux plugins de vimscript.org) et des répertoires locaux.

Le gestionnaire de plugins fournit certaines fonctionnalités classiques telles que la mise à jour et la désactivation des plugins. Il permet également l'exécution de crochets au moment de l'installation.

Notez que selon la FAQ, il semble que vous deviez créer manuellement les helptags des plugins qu'il installe.

Un point intéressant est que l'auteur souhaite que dein.vim soit facile à tester et à maintenir, de sorte que le référentiel contient également des scripts de test.

Enfin, je dirais que ce gestionnaire de plug-in semble être conçu pour être léger et rapide, ce qui est intéressant, mais je pense qu'il est moins convivial que vim-plug ou Vundle , par exemple.


Oh, aussi, Shougo décrit dein.vim comme étant un "gestionnaire de plug-in Vim / Neovim optimisé pour l'obscurité" si quelqu'un sait ce que cela signifie, n'hésitez pas à modifier cette réponse: je suis curieux ;-)


1
"Dark powered" est une phrase que vous allez trouver dans les plugins vim de Shougo qui ont un support / ou qui ne sont que pour NeoVim.
Yonsy Solis

8
Je pense que l'expression "Dark powered" vient des "utilisateurs de Light Vim" - ceux qui n'utilisent que les fonctionnalités par défaut et "utilisateurs de Dark Vim" - ceux qui essaient de l'utiliser comme IDE ou au moins utilisent beaucoup de plugins et qui ont beaucoup des lignes ajoutées à leur fichier vimrc (plus à ce sujet ici dans la présentation de Shougo - slideshare.net/Shougo/lets-talk-about-neovim - diapositive 6)
lewiatan

1
@lewiatan: Merci, je pense que vous obtenez la bonne réponse. (Présentation intéressante de Shougo, au fait)
statox

1
@statox Shougo déclare : "Dein.vim abandonne également l'utilisation de la commande en faveur de l'appel de fonction, ce qui peut également contribuer à la performance (cependant, je ne suis pas sûr)."
Alexej Magura

1
@statox, Lulz, non, ce ne sont probablement pas les mots de Shougo, alors, je n'avais pas réalisé que ce n'était pas son blog.
Alexej Magura

13

Vim 8.0 et Neovim ont tous deux leur propre gestionnaire de paquets intégré. Dans Vim 8.0, créez les répertoires suivants:, .vim/pack/*/start*est le nom que vous souhaitez utiliser; par exemple .vim/pack/jimmy/start.

Clonez votre plugin dans le répertoire de départ comme vous le feriez si vous utilisiez un agent pathogène.

Avec Neovim, les répertoires sont un peu plus longs:

.local/share/nvim/site/pack/*/start. A partir de là, faites comme pour Vim.

Il n'y a pas du tout besoin d'un autre gestionnaire de plugins.

Dans Vim ou Neovim, courez :h packagespour un peu plus de détails. Lisez la partie sur les couleurs parce qu'elles sont différentes, mais pas beaucoup. Vous n'avez besoin d'aucune instruction supplémentaire dans votre .vimrcou vos nvim/init.vimfichiers.

J'espère que ça t'as aidé.


8

J'aime particulièrement VAM pour son auto-déploiement: tout ce dont vous avez besoin est votre .vimrc, puis démarrez vim.

Vous n'avez donc pas besoin de la To Installligne utilisée par la plupart des autres gestionnaires de plug-ins (la première étape de l'installation du gestionnaire de plug-ins lui-même).


6

En ce qui me concerne, je veux que le gestionnaire de plug-ins que j'utilise prenne en charge les dépendances.

Les raisons sont que je maintiens plusieurs plugins et que j'ai beaucoup d'inter-dépendances: une bibliothèque générique est utilisée par tous, le moteur template / snippet est utilisé par la suite C ++, le plugin refactoring utilise également le plugin ctags library-plugin , etc. Demander à l'utilisateur final d'exécuter jusqu'à 10 lignes pour installer les plug-ins qui les intéressent ne me semble pas une bonne solution.

Jusqu'à présent, je ne connais que deux de ces plugins: vim-addon-manager et NeoBundle . VAM a ajouté son code de base de données à vim-pi après de nombreux échanges sur la liste de diffusion officielle de vim. L'idée était que NeoBundle (et tout autre plugin intéressé par la gestion des dépendances) pourrait éventuellement exploiter vim-pi.

Je suis récemment tombé sur vim -avor qui gère également les dépendances. Sur le sujet, il vérifie les versions du plugin pour installer la bonne.

Note: Depuis ma réponse initiale,

  • Le développement de NeoBundle s'est arrêté;
  • et bien que vim-pi mette régulièrement à jour sa base de données à partir de plugins sur vim.org, et que VAM puisse toujours être utilisé pour exprimer des dépendances, il ne semble plus possible d'ajouter d'alias à la base de données vim-pi: MR / PR ne sont plus fusionnés

Autant que je sache, aucun de ces plugins clone / install / update des plugins en arrière-plan / parallèle. Comme je n’installe pas de nouvel environnement vim, ni ne mets à jour les plugins que j’ai installés une fois par mois, honnêtement, je m'en fiche. Bien sûr 'helptags', ils mettent à jour , prennent en charge 'rtp', et ainsi de suite.


vim-plugLe fichier README contient un exemple disant "Dépendances de groupes". Avez-vous essayé cela ou est-ce différent des méthodes de VAM / NeoBundle?
Muru

J'ai raté des dépendances de groupe dans la documentation de vim-plug. J'ai vu qu'ils ont toutefois supprimé leur tentative de prise en charge des dépendances de la base de code. En ce qui concerne les dépendances de groupe, je ne vois pas en quoi cela peut aider. Les dépendances ne doivent pas être déclarées par l'utilisateur final. Ils devraient être déclarés par les auteurs du plugin. Si vous regardez attentivement le plug-in lh-cpp, vous verrez que les dépendances ne sont pas linéaires. C'est un graphe orienté, qui doit être acyclique pour éviter les problèmes.
Luc Hermitte

Jusqu'ici, j'utilise VAM depuis plus d'une décennie et j'en suis heureux. Pourtant, j’ai utilisé vim -avor car il est beaucoup plus simple d’intégrer travis - afin de tester mes plugins. Et malheureusement, les deux utilisent une syntaxe différente pour déclarer les dépendances.
Luc Hermitte

1
Pour votre information: le développement de NeoBundle s'est arrêté (à partir du 23 février 2016). Il recommande son successeur Dein.vim (du même auteur) à la place.
Peter V. Mørch Le

3

La plupart de ces gestionnaires de plug-ins font un excellent travail de gestion des plug-ins mais laissent le mal à la gestion de les gérer vimrcpour vous. Si vous avez plusieurs machines et que vous voulez la même configuration, Vire vous facilite la tâche. Vous n'avez pas besoin de git ou de comprendre des sous-modules, ni d'effort supplémentaire pour installer ou migrer.

  • Installez Python, qui est ce que la plupart des plugins Vim modernes sont écrits et nécessaires de toute façon
  • pip install vire
  • Publiez votre vimrccontenu existant sur Github en tant qu'essentiel et conservez-le
  • Si sous Windows, vire -iinstaller la dernière version de Vim ou (Neovim avec -i -n)
  • Supprimez tous les appels de fonction de plug-in existants et définissez les appels commentés pour installer les plug-ins. " Plug 'tpope/vim-unimpaired'
  • vire gistID

Puis lancez-le à viretout moment si vous souhaitez que votre vimrcou vos plugins soient mis à jour ou -imettre à jour également l'application.

Vire utilise la packfonctionnalité de Vim / Neovim pour charger des plugins. Vous pouvez également continuer à utiliser votre gestionnaire de plug-ins existant, mais utilisez Vire pour installer uniquement Vim, le vimrcet le gestionnaire de plug-ins lui-même, si vous le souhaitez.


1

Pour ceux qui veulent un gestionnaire de plugins complet utilisant Pathogen, il existe aussi apt-vim. Vous pouvez l'installer avec curl -sL https://raw.githubusercontent.com/egalpin/apt-vim/master/install.sh | sh (comme décrit ici: https://www.linuxsecrets.com/1715-vi-editor-tips-trick-and-secrets-into-the-vi-vim-editor-part-ii ). Une fois installé, vous pouvez simplement taper apt-vim installsuivi du nom du référentiel de paquets, similaire au gestionnaire de paquets Ubuntu apt.


1
Ceci est essentiellement une réponse de lien seulement. Si vous pouviez entrer un peu plus en détail sur la façon d'installer et d'utiliser apt-vim, ce serait acceptable.
Tumbler41

Je l'ai mis à jour. Vraiment je pensais que cela devrait être un commentaire sur le post à propos de Pathogen, mais je n'ai pas assez de points pour faire des commentaires
Melanie Day

1
Lien manquant au plugin. Aussi encore un plugin qui suggère curl URL |sh. Je ne conseillerais jamais à quiconque de faire fonctionner du code aléatoire à partir d'Internet. Vraiment c'est une mauvaise habitude de sécurité.
Christian Brabandt

0

Je cherchais un moyen d’utiliser pathogenmais de mettre à jour facilement et de le rendre portable, alors un bashscript pourrait être utile (en utilisant des vim-plugfonctionnalités) -

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

Et puis un exemple .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
Pouvez-vous ajouter quelques détails à cela? La question principale posée par OP est la suivante: "Quelqu'un peut-il me donner un bref aperçu des différences [des gestionnaires de paquets] afin que je puisse choisir celle qui me convient le mieux"? Comment votre soumission aide-t-elle à répondre à cela? Qu'ajoutez-vous à l'agent pathogène spécifiquement qu'il n'a pas? Ce genre de chose.
Couche B
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.