O que seguir para criar um plugin vim?

11

Então, minha pergunta é simples. É uma boa idéia aprender scripts do vim apenas para criar o vim ou devemos adotar outras linguagens mais aceitas para isso.

Por exemplo, este link abre vídeos do YouTube que mostram Como usar o Python para criar plugins do vim.

Os scripts do Vim não são totalmente úteis, a menos que se pretenda criar alguns plugins do vim. Então, existe algo em particular que não pode ser feito, a menos que os scripts vim sejam usados ​​apenas?

Mayukh Sarkar
fonte
2
Observe que muitas pessoas usam o vimscript para configurar (muito minuciosamente) seu Vim, sem criar ou distribuir nenhum plug-in.
VanLaser

Respostas:

12

Meus plugins são 99% no VimL. O motivo é que o VimL está disponível onde o vim está instalado. É muito mais complicado com outras linguagens - por exemplo, é raro ter o Python instalado nas caixas de janelas onde uso o Vim.

É claro que o VimL é complicado, faltam muitos recursos interessantes, mas pelo menos é mais fácil ter algo portátil.

O 1% que não está no VimL é quando eu preciso interagir com a API externa, que oferece ligações python.

BTW, quase tudo que você aprende sobre o VimL pode ser usado interativamente quando você joga com comandos como :substitute. A maioria dos mapeamentos ou macros também não precisa de python.

Luc Hermitte
fonte
11
Na verdade, não acho o VimL tão complicado. Obviamente, eu concordo que faltam recursos e funcionalidades interessantes de linguagens de nível superior, como python, mas depois de trabalhar com ele por algum tempo, acho o VimL bastante agradável de se trabalhar. Eu acho que a reputação do VimL é pior do que precisa.
Karl Yngve Lervåg
Bem. Devo admitir que muitos progressos foram feitos desde o vim5.x (quando comecei a usá-lo). Mas ainda existem casos em que precisamos fazer coisas complexas. Veja, por exemplo, map()que espera strings ou (o não relacionado) :map. Muitas vezes eu tenho de jogar com / em torno de avaliação corda para chegar a minhas extremidades, como a geração de mapeamentos ou processamento de lista de chamadas de função, ...
Luc Hermitte
Escrever plugins do vim em outro idioma não o impede de aprender o VimL, ​​porque as ligações para python / ruby ​​/ etc. são bastante limitados e você inevitavelmente acaba execrecebendo trechos do VimL de qualquer maneira. Ele permite que você escreva sua lógica principal em uma linguagem na qual possa trabalhar com muito mais eficiência, mas você ainda precisa aprender o VimL.
hobbs
12

Se você pretende escrever plugins, deve ler definitivamente o belo artigo "Writing Vim Plugins", de Steve Losh ; não apenas para decidir se você continuará com o VimL ou não, mas também para os conselhos de melhores práticas.

Ele também contém uma pequena discussão sobre o Scripting Vim com outros idiomas :

Primeiro, o uso de outro idioma exige que os usuários do plug-in usem uma versão do Vim compilada com suporte para essa versão. Hoje em dia, geralmente não é um problema, mas se você deseja que seu plug-in seja executado em qualquer lugar, não é uma opção.

Usar outro idioma adiciona sobrecarga. Você precisa aprender não apenas o Vimscript, mas também a interface entre o Vim e o idioma. Para plugins pequenos, isso pode adicionar mais complexidade ao projeto do que salvar, mas para plugins maiores, ele pode se pagar. Cabe a você decidir se vale a pena.

Por fim, o uso de outro idioma não o isola totalmente das excentricidades do Vimscript. Você ainda precisa aprender como fazer a maioria das coisas no Vimscript - o uso de outro idioma simplesmente permite agrupar tudo isso de maneira mais organizada do que você poderia.

Minha experiência é que, mesmo quando um plug-in não-VimL é melhor, acabo mudando para uma alternativa pura do VimL posteriormente, principalmente por causa da portabilidade. O Vim roda em praticamente qualquer sistema (mesmo sistemas antigos e feios), e a sobrecarga de configurar dependências ou desativar temporariamente esse plug-in não vale a pena (especialmente se você esquecer que o desativou e tentar usar seus mapeamentos / comandos) .

Mesmo quando é mais fácil configurar as dependências, você pode encontrar alguns problemas (por exemplo: alguns plugins baseados em python não funcionam 100% quando originados de pastas compartilhadas em máquinas virtuais). É por isso que os poucos plugins que escrevi usam apenas o VimL.

mMontu
fonte