Neovim 0.6.0 versiyasi, Vim muharririning modernizatsiya qilingan versiyasi

Neovim 0.6.0 chiqarildi, Vim muharririning vilkalari kengaytirilish va moslashuvchanlikni oshirishga qaratilgan. Loyiha etti yildan ko'proq vaqt davomida Vim kod bazasini qayta ishlamoqda, buning natijasida kodga texnik xizmat ko'rsatishni soddalashtiradigan, bir nechta xizmat ko'rsatuvchilar o'rtasida mehnatni taqsimlash vositasini ta'minlaydigan, interfeysni asosiy qismdan ajratadigan o'zgarishlar kiritildi (interfeys bo'lishi mumkin). ichki qismlarga tegmasdan o'zgartirildi) va plaginlar asosida yangi kengaytiriladigan arxitekturani amalga oshiring. Loyihaning asl ishlanmalari Apache 2.0 litsenziyasi, asosiy qismi esa Vim litsenziyasi ostida tarqatiladi. Linux (appimage), Windows va macOS uchun tayyor yig'ilishlar tayyorlangan.

Neovim-ni yaratishga turtki bo'lgan Vim bilan bog'liq muammolardan biri uning 300 mingdan ortiq C (C89) kodlaridan iborat bo'lgan monolit kod bazasi edi. Vim kod bazasining barcha nuanslarini faqat bir nechta odam tushunadi va barcha o'zgarishlar bitta xizmat ko'rsatuvchi tomonidan boshqariladi, bu esa muharrirni saqlash va yaxshilashni qiyinlashtiradi. GUI-ni qo'llab-quvvatlash uchun Vim yadrosiga o'rnatilgan kod o'rniga Neovim turli xil asboblar to'plamlari yordamida interfeyslarni yaratishga imkon beruvchi universal qatlamdan foydalanishni taklif qiladi.

Neovim uchun plaginlar alohida jarayonlar sifatida ishga tushiriladi, ular bilan ishlash uchun MessagePack formati qo'llaniladi. Plaginlar bilan o'zaro ishlash muharrirning asosiy komponentlarini bloklamasdan asinxron tarzda amalga oshiriladi. Plaginga kirish uchun TCP soketidan foydalanish mumkin, ya'ni. plagin tashqi tizimda ishlashi mumkin. Shu bilan birga, Neovim Vim bilan orqaga qarab mos bo'lib qoladi, Vimscript-ni qo'llab-quvvatlashda davom etadi (Lua muqobil sifatida taqdim etiladi) va ko'pgina standart Vim plaginlari uchun ulanishlarni qo'llab-quvvatlaydi. Neovim-ning ilg'or xususiyatlaridan Neovim-ga xos API-lar yordamida yaratilgan plaginlarda foydalanish mumkin.

Hozirgi vaqtda 130 ga yaqin maxsus plaginlar allaqachon tayyorlangan, plaginlarni yaratish va turli xil dasturlash tillari (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) va ramkalar (Qt, ncurses, Node .js, Electron, GTK). Bir nechta foydalanuvchi interfeysi variantlari ishlab chiqilmoqda. GUI qo'shimchalari plaginlarga o'xshaydi, lekin plaginlardan farqli o'laroq, ular Neovim funktsiyalariga qo'ng'iroqlarni boshlaydi, plaginlar esa Neovim ichidan chaqiriladi.

Yangi versiyadagi ba'zi o'zgarishlar:

  • Mahalliy o'zgaruvchilarni qo'llab-quvvatlash vim skriptlariga qo'shildi, ularning doirasi faqat joriy skript bilan cheklangan.
  • Plaginlarni ishlab chiqish va konfiguratsiyani boshqarish uchun Lua tilini qo'llab-quvvatlash sezilarli darajada yaxshilandi. Vim skriptlarida v:lua prefiksini belgilash orqali Lua funksiyalarini usul sifatida chaqirish imkoniyati qo‘shilgan (masalan, “arg1->v:lua.somemod.func(arg2)”).
  • O'rnatilgan LSP mijozining (Language Server Protocol) imkoniyatlari kengaytirildi, ular tahlil mantig'ini va kodni to'ldirishni tashqi serverlarga o'tkazish uchun ishlatilishi mumkin. LSP dan foydalanish Visual Studio Code muharriri uchun tayyorlangan turli dasturlash tillari uchun 150 dan ortiq tayyor ishlov beruvchilardan foydalanish imkonini beradi.
  • Koddagi muammolarni tashxislash uchun yaxshilangan vositalar. Diagnostik xabarlar matnini va bunday xabarlar bilan bog'liq kodli suzuvchi oynalarni ko'rsatish imkoniyati qo'shildi. LSP serveri tomonidan uzatiladigan diagnostika xabarlarini qayta ishlash ta'minlanadi.
  • Masalan, xizmat ma'lumotlari bilan bloklarni ko'rsatish uchun ishlatilishi mumkin bo'lgan virtual satrlarni qo'llab-quvvatlash qo'shildi.
  • Turli xil ishlash optimallashtirishlari amalga oshirildi, masalan, ajratilgan guruh nomlari uchun xesh jadvali yoqilgan.
  • Windows 7 va 32-bitli Windows tuzilmalarini qo‘llab-quvvatlash to‘xtatildi.

Manba: opennet.ru

a Izoh qo'shish