Bir vim eklentisi oluşturmak için ne yapmalı?


12

Yani sorum basit. Sadece vim oluşturmak için vim komut dosyasını öğrenmek iyi bir fikir mi yoksa daha kabul edilmiş başka diller de benimsemeliyiz.

Örneğin Bu bağlantı, vim eklentileri oluşturmak için Python'un nasıl kullanılacağını gösteren bir YouTube videosu açar.

Vim komut dosyaları, bazı vim eklentileri oluşturmak istemedikçe tamamen yararlı değildir. Vim komut dosyaları kullanılmadığı sürece yapılamayacak herhangi bir şey var mı?


2
Birçok kişinin herhangi bir eklenti oluşturmadan veya dağıtmadan Vim'lerini yapılandırmak için (çok iyice) vimscript kullandığını unutmayın.
VanLaser

Yanıtlar:


12

Eklentilerim VimL'de% 99. Bunun nedeni, VimL'nin vim'in kurulu olduğu yerlerde kullanılabilir olmasıdır. Diğer dillerle çok daha karmaşık - örneğin, Vim'i kullandığım pencerelerde Python yüklü olması nadirdir.

Tabii ki VimL hantal, birçok harika özellik eksik, ama en azından taşınabilir bir şeye sahip olmak daha kolay.

VimL değil% 1 ben python bağları sunan harici API ile etkileşim gerektiğinde olduğunu.

BTW, VimL ile ilgili öğrendiğiniz hemen hemen her şey, gibi komutlarla oynadığınızda etkileşimli olarak kullanılabilir :substitute. Çoğu eşleme veya makro için de python gerekmez.


1
Aslında VimL'i hantal bulmuyorum. Tabii ki, python gibi üst düzey dillerin havalı özelliklerinden ve işlevlerinden yoksun olduğuna katılıyorum, ancak bir süre onunla çalıştıktan sonra VimL ile çalışmak oldukça hoş buluyorum. Bence VimL'in itibarı olması gerekenden daha kötü.
Karl Yngve Lervåg

İyi. İtiraf etmeliyim ki vim5.x'den beri kullanmaya başladım. Ancak hala karmaşık şeyler yapmak zorunda olduğumuz köşe vakaları var. Örneğin map(), dizeleri bekleyen veya (ilgisiz) ifadelere bakın :map. Sık sık harita oluşturma veya fonksiyon çağrıları listesi işleme gibi uçlarıma gelmek için dize değerlendirme ile / etrafında oynamak zorunda, ...
Luc Hermitte

Vim eklentilerini başka bir dilde yazmak, sizi VimL'yi öğrenmekten kurtarmaz, çünkü python / ruby ​​/ vb. oldukça sınırlıdır ve kaçınılmaz execolarak VimL parçacıklarıyla sonuçlanırsınız. Çekirdek mantığınızı çok daha verimli çalışabileceğiniz bir dilde yazmanıza izin verir, ancak yine de VimL'yi öğrenmeniz gerekir.
ocaklar

12

Eklentileri yazmak istiyorsanız , Steve Losh tarafından yazılan "Vim Eklentileri Yazma" adlı güzel makaleyi kesinlikle okumalısınız ; sadece VimL ile yapışıp yapışmayacağınıza karar vermek için değil, aynı zamanda en iyi uygulama önerileri için.

Ayrıca , diğer dillerle Komut Dosyası Vim'i hakkında küçük bir tartışma içerir :

İlk olarak, başka bir dil kullanmak, eklentinizin kullanıcılarının bu sürüm için destekle derlenmiş bir Vim sürümünü kullanmasını gerektirir. Bu gün ve yaşta bu genellikle bir sorun değildir, ancak eklentinizin her yerde çalışmasını istiyorsanız bir seçenek değildir.

Başka bir dil kullanmak yükü artırır. Sadece Vimscript'i değil, aynı zamanda Vim ve dil arasındaki arayüzü de öğrenmelisiniz. Küçük eklentiler için bu, projeye kaydettiğinden daha karmaşık olabilir, ancak daha büyük eklentiler için kendisi ödeyebilir. Buna değip değmeyeceğine karar vermek size kalmış.

Son olarak, başka bir dil kullanmak sizi Vimscript'in dış merkezlerinden tamamen yalımaz. Vimscript'te çoğu şeyi nasıl yapacağınızı öğrenmeniz gerekiyor - başka bir dil kullanmak, bunun çoğunu aksi halde yapabileceğinizden daha düzgün bir şekilde sarmanıza izin veriyor.

Deneyimlerim, bir VimL olmayan eklenti daha iyi olsa bile, daha sonra esas olarak taşınabilirlik nedeniyle saf bir VimL alternatifine geçmem. Vim hemen hemen her sistemde (çirkin ve eski eski sistemler) çalışır ve bu eklentinin bağımlılıklarını veya geçici olarak devre dışı bırakma yükü değmez (özellikle devre dışı bıraktığınızı unutmaya ve eşlemelerini / komutlarını kullanmaya çalışıyorsanız) .

Bağımlılıkları ayarlamak daha kolay olsa bile bazı sorunlara varabilirsiniz (örneğin: bazı python tabanlı eklentiler Sanal Makinelerdeki paylaşılan klasörlerden alındığında% 100 çalışmaz). Bu yüzden yazdığım birkaç eklenti sadece VimL kullanıyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.