Em um dos plugins do vim que eu uso, estamos pensando em usar python vs vimscript daqui para frente ( https://github.com/python-mode/python-mode/issues/813#issuecomment-344754563 ).
Entendo que você pode usar o Python para escrever plugins para o VIM ( https://dzone.com/articles/how-write-vim-plugins-python ), desde que você tenha um +python
/ +python3
em sua distribuição do vim, o plug-in deve funcionar.
Não escrevi nenhum plug-in para o VIM, mas acho que escrever um plug-in VIM de código-fonte aberto para desenvolvimento em Python no Python é melhor comparado a escrevê-lo no VimL. Você notará que há vários usuários que sugeriram soluções, mas não conhecem o VimL e não querem aprender, porque já conhecem o Python e estão trabalhando no Python. Assim, escrever um novo código no Python daqui para frente nos permitirá obter mais usuários, bem como obter mais colaboradores e criar mais valor.
Questão
Quais são as desvantagens de escrever um plug-in Vim usando Python vs VimL? (Vamos supor que todos os usuários que usam este plugin já possuam +python
/ +python3
, porque o usarão para desenvolver Python)
fonte
Respostas:
TL; DR:
Exigindo
+python
/+python3
suporte para um plug-in de desenvolvimento baseado em python. Isso parece completamente razoável.Sobre plugins Vim e comportamento humano
Geralmente, os humanos falantes querem que as coisas pareçam simples e "apenas funcionem". Quando se trata de plug-ins do Vim, o Vimmers normalmente deseja plug-ins com pouca ou nenhuma dependência. Basicamente, deve ser tão simples quanto um
git clone
e / ou algumas linhas em seuvimrc
arquivo. Quanto mais um plug-in precisar ser configurado para funcionar inicialmente ou exigir alguma dependência, basta adicionar uma barreira à entrada.Um ótimo exemplo desse comportamento é CommandT vs CtrlP :
Agora você assumiria que o CommandT é mais popular, especialmente desde que foi lançado primeiro, mas esse não é o caso. O CommandT possui aproximadamente 2000 usuários e o CtrlP possui aproximadamente 20.000 usuários . Na minha opinião, os requisitos do CommandT causam uma barreira à entrada. Você simplesmente não pode fazer
git clone
o vim dotfiles e estar em funcionamento em uma nova máquina com o CommandT, como você pode com o CtrlP.Contraponto:
Isso é C + Ruby não
+python
/+python3
. Existe suporte embutido para Python. Você está absolutamente correto. Um exemplo que comprova esse ponto seria Gundo (~ 5.000) usando+python
vs undotree (~ 1.000), que é puro VimL. Eu argumentaria, na minha opinião pessoal, que o undotree é menos conhecido que o Gundo (o primeiro no mercado) e o fato de muitos estarem usando o undotree pode muito bem ter a ver com o fato de ser puro VimL vs python.Bom o suficiente para mim, vou usar o Python no meu plugin Vim!
No final do dia, você precisa saber um pouco sobre o Vim e alguns VimL para fazer o plug-in do Vim em Python. O
vim
módulo é muito melhor do que era antes, mas ainda requer uma quantidade razoável de situações semelhantes a avaliações do VimL:Veja
:h python-vim
.Você também precisará do VimL para "inicializar" a parte python do seu plug-in. Portanto, não há como escapar do VimL, apenas reduzindo a quantidade.
Conclusões
Se você precisar
+python
/+python3
certamente use-o. Parece que você tem um maravilhoso caso de uso para suporte a python. No entanto, na minha opinião, você não escapará completamente do VimL / Vimscript. Eu recomendaria fazer coisas do Vim no VimL e usar python para coisas difíceis / difíceis / lentas de fazer no VimL.fonte
git submodule
partir do ponto de desenvolvimento, mas talvez tenhamos que resumir isso em um script bash, para que as pessoas não precisem passar por muitos obstáculos para poder instalar este plug-in. Dessa forma, poderíamos abordar as preocupações dos desenvolvedores e usuários.Falando por mim, principalmente no Windows, mas às vezes em outras plataformas, nunca fiquei satisfeito com a realidade da integração do Python. Aprecio que esteja lá para as pessoas que precisam, mas não "apenas funciona"; você precisa obter a versão precisa da DLL do Python e isso foi tentativa e erro para mim quando o fiz pela última vez e, no final, descobri que o pagamento não valia o esforço.
Hoje, tenho algumas funcionalidades que escrevi em Python que utilizo dentro do Vim e a aciono com uma
system('python ...')
chamada para executar o script.fonte