Que suivre pour créer un plugin vim?

11

Ma question est donc simple. Est-ce une bonne idée d'apprendre les scripts vim juste pour créer vim ou nous devrions adopter d'autres langages plus acceptés pour cela.

Par exemple, ce lien ouvre une vidéo YouTube qui montre comment utiliser Python pour créer des plugins vim.

Les scripts Vim ne sont pas entièrement utiles à moins que l'on n'ait l'intention de créer des plugins vim. Alors, y a-t-il quelque chose de particulier qui ne peut être fait que si les scripts vim sont utilisés uniquement?

Mayukh Sarkar
la source
2
Notez que de nombreuses personnes utilisent vimscript pour configurer (de manière très approfondie) leur Vim, sans créer ni distribuer de plugins.
VanLaser

Réponses:

12

Mes plugins sont à 99% en VimL. La raison en est que VimL est disponible là où vim est installé. C'est beaucoup plus compliqué avec d'autres langages - par exemple, il est rare que Python soit installé sur les fenêtres où j'utilise Vim.

Bien sûr, VimL est encombrant, il manque de nombreuses fonctionnalités intéressantes, mais au moins, il est plus facile d'avoir quelque chose de portable.

Le 1% qui n'est pas dans VimL, ​​c'est quand j'ai besoin d'interagir avec une API externe qui propose des liaisons python.

BTW, presque tout ce que vous apprenez concernant VimL peut être utilisé de manière interactive lorsque vous jouez avec des commandes comme :substitute. La plupart des mappages ou macros n'ont pas non plus besoin de python.

Luc Hermitte
la source
1
En fait, je ne trouve pas VimL aussi encombrant. Bien sûr, je conviens qu'il manque des fonctionnalités intéressantes et des fonctionnalités de langages de niveau supérieur comme python, mais après avoir travaillé avec lui pendant un certain temps, je trouve VimL assez agréable à travailler. Je pense que la réputation de VimL est pire qu'elle ne devrait l'être.
Karl Yngve Lervåg
Bien. Je dois admettre que de nombreux progrès ont été réalisés depuis vim5.x (quand j'ai commencé à l'utiliser). Mais il y a encore des cas où nous devons faire des choses complexes. Voir par exemple map()qui attend des chaînes ou (sans lien) :map. Je dois souvent jouer avec / autour de l'évaluation des chaînes pour arriver à mes fins, comme générer des mappages ou traiter une liste d'appels de fonction, ...
Luc Hermitte
L'écriture de plugins vim dans une autre langue ne vous libère en aucun cas de l'apprentissage de VimL, ​​car les liaisons avec python / ruby ​​/ etc. sont assez limités et vous execfinissez inévitablement par des extraits de VimL de toute façon. Il vous permet d'écrire votre logique de base dans un langage dans lequel vous pourriez être en mesure de travailler beaucoup plus efficacement, mais vous avez encore à peu près besoin d'apprendre VimL.
Hobbs
12

Si vous avez l'intention d'écrire des plugins, vous devriez certainement lire le bel article "Writing Vim Plugins", par Steve Losh ; non seulement pour décider si vous vous en tiendrez à VimL ou non, mais pour les conseils de bonnes pratiques.

Il contient également une petite discussion sur Scripting Vim avec d'autres langues :

Tout d'abord, l'utilisation d'une autre langue nécessite que les utilisateurs de votre plugin utilisent une version de Vim compilée avec le support de cette version. De nos jours, ce n'est généralement pas un problème, mais si vous voulez que votre plugin s'exécute partout, ce n'est pas une option.

L'utilisation d'une autre langue ajoute des frais généraux. Vous devez non seulement apprendre Vimscript mais aussi l'interface entre Vim et la langue. Pour les petits plugins, cela peut ajouter plus de complexité au projet qu'il n'en enregistre, mais pour les plugins plus grands, il peut être rentable. C'est à vous de décider si cela en vaut la peine.

Enfin, l'utilisation d'une autre langue ne vous isole pas entièrement des excentricités de Vimscript. Vous devez toujours apprendre à faire la plupart des choses dans Vimscript - l'utilisation d'une autre langue vous permet simplement de résumer la plupart de ces choses plus soigneusement que vous ne le pourriez autrement.

D'après mon expérience, même lorsqu'un plugin non VimL est meilleur, je finis par passer à une alternative VimL pure plus tard, principalement en raison de la portabilité. Vim s'exécute sur pratiquement tous les systèmes (même les systèmes hérités laids et anciens), et la surcharge de configuration des dépendances ou de désactivation temporaire de ce plugin ne vaut pas la peine (surtout si vous oubliez que vous l'avez désactivé et essayez d'utiliser ses mappages / commandes) .

Même lorsqu'il est plus facile de configurer les dépendances, vous pouvez rencontrer certains problèmes (par exemple: certains plugins basés sur python ne fonctionnent pas à 100% lorsqu'ils proviennent de dossiers partagés sur des machines virtuelles). C'est pourquoi les quelques plugins que j'ai écrits utilisent uniquement VimL.

mMontu
la source