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

تم إصدار Neovim 0.7.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.

يوفر الإصدار الجديد الدعم الأولي للعمل عن بعد، مما يسمح لك بتشغيل Neovim على الخادم والاتصال به من نظام العميل باستخدام ui_client منفصل. تشمل التغييرات الأخرى: توقف دعم Python 2، والسماح باستخدام وظائف Lua في خريطة المفاتيح، وإضافة أوامر جديدة إلى واجهة برمجة التطبيقات (API)، وتوسيع القدرة على استخدام لغة Lua لتطوير المكونات الإضافية وإدارة التكوين بشكل كبير، تم تحسين أدوات تشخيص المشكلات في التعليمات البرمجية، وتمت إضافة دعم لشريط الحالة العام، وتم إجراء تحسينات في الأداء. تم توسيع إمكانيات عميل LSP المدمج (بروتوكول خادم اللغة)، والذي يمكن استخدامه لنقل منطق التحليل وإكمال التعليمات البرمجية إلى خوادم خارجية.

المصدر: opennet.ru

إضافة تعليق