در چارچوب پروژه Neovim، پایه کد Vim بیش از پنج سال است که دوباره کار می شود، در نتیجه تغییراتی ایجاد می شود که تعمیر و نگهداری کد را ساده می کند، وسیله ای برای تقسیم کار بین چندین نگهدارنده، جداسازی رابط از قسمت پایه (اینترفیس را می توان بدون دست زدن به قسمت های داخلی تغییر داد) و جدید را پیاده سازی کنید
یکی از مشکلات Vim که باعث ایجاد Neovim شد، پایه کد متورم و یکپارچه آن بود که از بیش از 300 هزار خط کد C (C89) تشکیل شده بود. فقط تعداد کمی از افراد تمام تفاوت های ظریف پایگاه کد Vim را درک می کنند و همه تغییرات توسط یک نگهدارنده کنترل می شود که حفظ و بهبود ویرایشگر را دشوار می کند. به جای کد تعبیه شده در هسته Vim برای پشتیبانی از رابط کاربری گرافیکی، Neovim استفاده از یک لایه جهانی را پیشنهاد می کند که به شما امکان می دهد با استفاده از جعبه ابزارهای مختلف رابط ایجاد کنید.
پلاگینها برای Neovim به عنوان فرآیندهای جداگانه راهاندازی میشوند که برای تعامل با آنها از قالب MessagePack استفاده میشود. تعامل با افزونه ها به صورت ناهمزمان و بدون مسدود کردن اجزای اصلی ویرایشگر انجام می شود. برای دسترسی به افزونه، می توان از یک سوکت TCP استفاده کرد، به عنوان مثال. پلاگین را می توان بر روی یک سیستم خارجی اجرا کرد. در همان زمان، Neovim با Vim سازگار باقی می ماند، به پشتیبانی از Vimscript (Lua به عنوان جایگزین ارائه می شود) ادامه می دهد و از اتصالات برای اکثر پلاگین های استاندارد Vim پشتیبانی می کند. ویژگی های پیشرفته Neovim را می توان در افزونه های ساخته شده با استفاده از API های خاص Neovim استفاده کرد.
در حال حاضر در حال حاضر
برخی از تغییرات در
- بخش بزرگی از توابع جدید API و رویدادهای رابط کاربری اضافه شده است.
- یک کتابخانه استاندارد جدید Nvim-Lua برای توسعه افزونه ها به زبان Lua اضافه کرد.
- توسعه پروتکل رابط کاربری ادامه دارد و اطلاعات روی صفحه نمایش را در سطح خطوط بهروزرسانی میکند، نه شخصیتهای فردی.
- پشتیبانی از پنجرههای شناور تمام عیار اضافه شده است، که میتوانند در هر مکانی قرار گیرند، متصل شوند، به بافرهای ویرایش جداگانه پیوند داده شوند و در حالت Multigrid گروهبندی شوند.
- گزینه "pumblend" برای منوهای کشویی شفاف اضافه شده است.
منبع: opennet.ru