إطلاق Neovim 0.6.0، نسخة حديثة من محرر Vim

تم إصدار Neovim 0.6.0، وهو عبارة عن شوكة لمحرر Vim تركز على زيادة القابلية للتوسعة والمرونة. قام المشروع بإعادة صياغة قاعدة كود Vim لأكثر من سبع سنوات، ونتيجة لذلك تم إجراء تغييرات لتبسيط صيانة الكود، وتوفير وسيلة لتقسيم العمل بين العديد من المشرفين، وفصل الواجهة عن الجزء الأساسي (يمكن تعديل الواجهة تم تغييرها دون لمس الأجزاء الداخلية) وتنفيذ بنية جديدة قابلة للتوسيع تعتمد على المكونات الإضافية. يتم توزيع التطويرات الأصلية للمشروع بموجب ترخيص Apache 2.0، ويتم توزيع الجزء الأساسي بموجب ترخيص Vim. يتم إعداد التجميعات الجاهزة لنظام التشغيل Linux (صورة التطبيق) وWindows وmacOS.

إحدى مشكلات Vim التي دفعت إلى إنشاء Neovim هي قاعدة بيانات متضخمة ومتجانسة تتكون من أكثر من 300 سطر من كود C (C89). لا يفهم سوى عدد قليل من الأشخاص جميع الفروق الدقيقة في قاعدة كود Vim ، ويتم التحكم في جميع التغييرات بواسطة مشرف واحد ، مما يجعل من الصعب الحفاظ على المحرر والعمل على تحسينه. بدلاً من الكود المدمج في Vim core لدعم واجهة المستخدم الرسومية ، تقترح Neovim استخدام طبقة عالمية تسمح لك بإنشاء واجهات باستخدام مجموعات أدوات متنوعة.

يتم تشغيل المكونات الإضافية لـ Neovim كعمليات منفصلة للتفاعل مع تنسيق MessagePack. يتم إجراء التفاعل مع المكونات الإضافية في الوضع غير المتزامن ، دون حظر المكونات الأساسية للمحرر. يمكن استخدام مقبس TCP للوصول إلى البرنامج المساعد ، أي يمكن تشغيل المكون الإضافي على نظام خارجي. في الوقت نفسه ، تظل Neovim متوافقة مع الإصدارات السابقة مع Vim ، وتواصل دعم Vimscript (يتم تقديم Lua كبديل) وتدعم توصيل معظم ملحقات Vim العادية. يمكن استخدام الميزات المتقدمة لـ Neovim في المكونات الإضافية التي تم إنشاؤها باستخدام واجهة برمجة التطبيقات الخاصة بـ Neovim.

حاليًا، تم بالفعل إعداد حوالي 130 مكونًا إضافيًا محددًا، وتتوفر الارتباطات لإنشاء المكونات الإضافية وتنفيذ الواجهات باستخدام لغات البرمجة المختلفة (C++، Clojure، Perl، Python، Go، Java، Lisp، Lua، Ruby) والأطر (Qt، ncurses، Node .js، Electron، GTK). يجري تطوير العديد من خيارات واجهة المستخدم. تشبه الوظائف الإضافية لواجهة المستخدم الرسومية المكونات الإضافية إلى حد كبير، ولكن على عكس المكونات الإضافية، فإنها تبدأ استدعاءات لوظائف Neovim، بينما يتم استدعاء المكونات الإضافية من داخل Neovim.

بعض التغييرات في الإصدار الجديد:

  • تمت إضافة دعم للمتغيرات المحلية إلى البرامج النصية vim، والتي يقتصر نطاقها فقط على البرنامج النصي الحالي.
  • تم تحسين دعم لغة Lua بشكل كبير لتطوير المكونات الإضافية وإدارة التكوين. في البرامج النصية vim، تمت إضافة القدرة على استدعاء وظائف Lua كطرق عن طريق تحديد البادئة v:lua (على سبيل المثال، "arg1->v:lua.somemod.func(arg2)").
  • تم توسيع إمكانيات عميل LSP المدمج (بروتوكول خادم اللغة)، والذي يمكن استخدامه لنقل منطق التحليل وإكمال التعليمات البرمجية إلى خوادم خارجية. يتيح لك استخدام LSP استخدام أكثر من 150 معالجًا جاهزًا للغات البرمجة المختلفة المعدة لمحرر Visual Studio Code.
  • أدوات محسنة لتشخيص المشاكل في التعليمات البرمجية. تمت إضافة القدرة على عرض نص الرسائل التشخيصية والنوافذ العائمة مع الكود المرتبط بهذه الرسائل. يتم توفير معالجة الرسائل التشخيصية المرسلة بواسطة خادم LSP.
  • تمت إضافة دعم للسلاسل الافتراضية، والتي يمكن استخدامها، على سبيل المثال، لعرض الكتل مع معلومات الخدمة.
  • تم إجراء تحسينات مختلفة على الأداء، على سبيل المثال، تم تمكين جدول التجزئة لأسماء المجموعات المميزة.
  • تم إيقاف دعم إصدارات Windows 7 والإصدارات 32 بت من Windows.

المصدر: opennet.ru

إضافة تعليق