¿Qué seguir para crear un complemento vim?

11

Entonces mi pregunta es simple. ¿Es una buena idea aprender scripts de vim solo para crear vim o deberíamos adoptar otros lenguajes más aceptados para eso?

Por ejemplo, este enlace abre videos de YouTube que muestran cómo usar Python para crear complementos vim.

Las secuencias de comandos Vim no son del todo útiles a menos que uno tenga la intención de crear algunos complementos vim. Entonces, ¿hay algo en particular que no se pueda hacer a menos que solo se usen scripts vim?

Mayukh Sarkar
fuente
2
Tenga en cuenta que muchas personas usan vimscript para configurar (muy a fondo) su Vim, sin crear ni distribuir ningún complemento.
VanLaser

Respuestas:

12

Mis complementos son 99% en VimL. La razón es que VimL está disponible donde está instalado vim. Es mucho más complicado con otros idiomas; por ejemplo, es raro que tenga Python instalado en los cuadros de Windows donde uso Vim.

Por supuesto, VimL es engorroso, le faltan muchas características interesantes, pero al menos, es más fácil tener algo portátil.

El 1% que no está en VimL es cuando necesito interactuar con API externas que ofrecen enlaces de python.

Por cierto, casi todo lo que aprendes con respecto a VimL se puede usar de forma interactiva cuando juegas con comandos como :substitute. La mayoría de las asignaciones o macros tampoco necesitan python.

Luc Hermitte
fuente
1
De hecho, no encuentro VimL tan engorroso. Por supuesto, estoy de acuerdo en que carece de características y funcionalidades geniales de lenguajes de nivel superior como python, pero después de trabajar con él durante algún tiempo, encuentro que trabajar con VimL es bastante agradable. Creo que la reputación de VimL es peor de lo que debería ser.
Karl Yngve Lervåg
Bien. Debo admitir que se han hecho muchos progresos desde vim5.x (cuando comencé a usarlo). Pero todavía hay casos en los que tenemos que hacer cosas complejas. Vea, por ejemplo, map()que espera cadenas o (lo no relacionado) :map. A menudo tengo que jugar con / alrededor de la evaluación de cadenas para llegar a mis extremos, como generar asignaciones o procesar la lista de llamadas a funciones, ...
Luc Hermitte
Escribir complementos vim en otro idioma no te libera de aprender VimL de todos modos, porque los enlaces a python / ruby ​​/ etc. son bastante limitados e inevitablemente terminas formando execfragmentos de VimL de todos modos. Le permite escribir su lógica central en un lenguaje en el que podría trabajar de manera mucho más eficiente, pero aún necesita aprender VimL.
hobbs
12

Si tiene la intención de escribir complementos, definitivamente debería leer el bonito artículo "Writing Vim Plugins", de Steve Losh ; no solo por decidir si se quedará con VimL o no, sino por los consejos de mejores prácticas.

También contiene una pequeña discusión sobre Scripting Vim con otros idiomas :

Primero, usar otro idioma requerirá que los usuarios de su complemento usen una versión de Vim compilada con soporte para esa versión. En la actualidad, generalmente no es un problema, pero si desea que su complemento se ejecute en todas partes, entonces no es una opción.

Usar otro idioma agrega gastos generales. No solo debe aprender Vimscript, sino también la interfaz entre Vim y el idioma. Para complementos pequeños, esto puede agregar más complejidad al proyecto de lo que ahorra, pero para complementos más grandes puede pagarse por sí mismo. Depende de usted decidir si vale la pena.

Finalmente, usar otro idioma no lo aísla por completo de las excentricidades de Vimscript. Todavía necesita aprender cómo hacer la mayoría de las cosas en Vimscript: el uso de otro idioma simplemente le permite concluir la mayoría de las cosas de una manera más clara de lo que podría hacerlo de otra manera.

Mi experiencia es que incluso cuando un complemento que no es VimL es mejor, termino cambiando a una alternativa VimL pura más tarde, principalmente debido a la portabilidad. Vim se ejecuta en prácticamente cualquier sistema (incluso los sistemas heredados feos y antiguos), y la sobrecarga de configurar las dependencias o deshabilitar temporalmente ese complemento no vale la pena (especialmente si olvida que lo deshabilitó e intenta usar sus asignaciones / comandos) .

Incluso cuando es más fácil configurar las dependencias, puede encontrar algunos problemas (por ejemplo: algunos complementos basados ​​en Python no funcionan al 100% cuando provienen de carpetas compartidas en máquinas virtuales). Es por eso que los pocos complementos que escribí usan solo VimL.

mMontu
fuente