Vim editörünün modernize edilmiş bir versiyonu olan Neovim 0.6.0'ın piyasaya sürülmesi

Vim editörünün genişletilebilirliği ve esnekliği artırmaya odaklanan bir çatalı olan Neovim 0.6.0 yayınlandı. Proje, yedi yıldan fazla bir süredir Vim kod tabanı üzerinde yeniden çalışıyor; bunun sonucunda kod bakımını basitleştiren, birkaç bakımcı arasında iş bölümü sağlayan, arayüzü temel kısımdan ayıran bir araç sağlayan değişiklikler yapıldı (arayüz dahili parçalara dokunmadan değiştirildi) ve eklentilere dayalı yeni genişletilebilir bir mimari uygulayın. Projenin orijinal geliştirmeleri Apache 2.0 lisansı altında, temel kısmı ise Vim lisansı altında dağıtılmaktadır. Linux (appimage), Windows ve macOS için hazır montajlar hazırlanmıştır.

Neovim'in yaratılmasına yol açan Vim sorunlarından biri, 300 binden fazla C (C89) kodu satırından oluşan şişirilmiş, yekpare kod tabanıydı. Yalnızca birkaç kişi Vim kod tabanının tüm nüanslarını anlıyor ve tüm değişiklikler tek bir bakımcı tarafından kontrol ediliyor, bu da editörün bakımını ve geliştirilmesini zorlaştırıyor. Neovim, GUI'yi desteklemek için Vim çekirdeğine yerleşik kod yerine, çeşitli araç kitlerini kullanarak arayüzler oluşturmanıza olanak tanıyan evrensel bir katman kullanmayı önerir.

Neovim eklentileri, MessengerPack formatının kullanıldığı etkileşim için ayrı işlemler olarak başlatılır. Eklentilerle etkileşim, düzenleyicinin temel bileşenlerini engellemeden, eşzamansız olarak gerçekleştirilir. Eklentiye erişmek için bir TCP soketi kullanılabilir; eklenti harici bir sistemde çalıştırılabilir. Aynı zamanda Neovim, Vim ile geriye dönük olarak uyumlu olmaya devam ediyor, Vimscript'i desteklemeye devam ediyor (alternatif olarak Lua sunulmaktadır) ve çoğu standart Vim eklentisi için bağlantıları destekliyor. Neovim'in gelişmiş özellikleri, Neovim'e özel API'ler kullanılarak oluşturulan eklentilerde kullanılabilir.

Şu anda, yaklaşık 130 özel eklenti halihazırda hazırlanmıştır; çeşitli programlama dilleri (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) ve çerçeveler (Qt, ncurses, Node .js, Electron, GTK). Çeşitli kullanıcı arayüzü seçenekleri geliştirilmektedir. GUI eklentileri eklentilere çok benzer, ancak eklentilerden farklı olarak Neovim işlevlerine çağrı başlatırken eklentiler Neovim'in içinden çağrılır.

Yeni versiyondaki bazı değişiklikler:

  • Kapsamı yalnızca geçerli komut dosyasıyla sınırlı olan vim komut dosyalarına yerel değişkenler için destek eklendi.
  • Eklenti geliştirme ve konfigürasyon yönetimi için önemli ölçüde iyileştirilmiş Lua dil desteği. Vim komut dosyalarında, v:lua öneki belirtilerek Lua işlevlerini yöntem olarak çağırma yeteneği eklenmiştir (örneğin, "arg1->v:lua.somemod.func(arg2)").
  • Analiz mantığını ve kod tamamlamayı harici sunuculara aktarmak için kullanılabilecek yerleşik LSP istemcisinin (Dil Sunucusu Protokolü) yetenekleri genişletildi. LSP kullanımı, Visual Studio Code editörü için hazırlanmış çeşitli programlama dilleri için 150'den fazla hazır işleyiciyi kullanmanıza olanak tanır.
  • Koddaki sorunları teşhis etmek için geliştirilmiş araçlar. Teşhis mesajlarının metnini ve bu mesajlarla ilişkili kodu içeren kayan pencereleri görüntüleme yeteneği eklendi. LSP sunucusu tarafından iletilen teşhis mesajlarının işlenmesi sağlanır.
  • Örneğin servis bilgileri içeren blokları görüntülemek için kullanılabilecek sanal dizeler için destek eklendi.
  • Çeşitli performans optimizasyonları yapıldı; örneğin, vurgulanan grup adları için bir karma tablosu etkinleştirildi.
  • Windows 7 ve 32 bit Windows sürümlerine yönelik destek durduruldu.

Kaynak: opennet.ru

Yorum ekle