انتشار Neovim 0.7.0، یک نسخه مدرن از ویرایشگر Vim

Neovim 0.7.0 منتشر شده است، فورکی از ویرایشگر Vim با تمرکز بر افزایش توسعه پذیری و انعطاف پذیری. این پروژه بیش از هفت سال است که پایه کد Vim را دوباره کار می کند، در نتیجه تغییراتی ایجاد می شود که نگهداری کد را ساده می کند، وسیله ای برای تقسیم کار بین چندین نگهدارنده فراهم می کند، رابط را از قسمت پایه جدا می کند (اینترفیس می تواند بدون دست زدن به قسمت های داخلی تغییر کرد) و یک معماری توسعه پذیر جدید را بر اساس پلاگین ها پیاده سازی کنید. توسعه‌های اصلی پروژه تحت مجوز Apache 2.0 و بخش اصلی تحت مجوز Vim توزیع شده است. مجموعه های آماده برای لینوکس (appimage)، ویندوز و macOS آماده شده اند.

یکی از مشکلات Vim که باعث ایجاد Neovim شد، پایه کد متورم و یکپارچه آن بود که از بیش از 300 هزار خط کد C (C89) تشکیل شده بود. فقط تعداد کمی از افراد تمام تفاوت های ظریف پایگاه کد Vim را درک می کنند و همه تغییرات توسط یک نگهدارنده کنترل می شود که حفظ و بهبود ویرایشگر را دشوار می کند. به جای کد تعبیه شده در هسته Vim برای پشتیبانی از رابط کاربری گرافیکی، Neovim استفاده از یک لایه جهانی را پیشنهاد می کند که به شما امکان می دهد با استفاده از جعبه ابزارهای مختلف رابط ایجاد کنید.

پلاگین‌ها برای Neovim به عنوان فرآیندهای جداگانه راه‌اندازی می‌شوند که برای تعامل با آنها از قالب MessagePack استفاده می‌شود. تعامل با افزونه ها به صورت ناهمزمان و بدون مسدود کردن اجزای اصلی ویرایشگر انجام می شود. برای دسترسی به افزونه، می توان از یک سوکت TCP استفاده کرد، به عنوان مثال. پلاگین را می توان بر روی یک سیستم خارجی اجرا کرد. در همان زمان، Neovim با Vim سازگار باقی می ماند، به پشتیبانی از Vimscript (Lua به عنوان جایگزین ارائه می شود) ادامه می دهد و از اتصالات برای اکثر پلاگین های استاندارد Vim پشتیبانی می کند. ویژگی های پیشرفته Neovim را می توان در افزونه های ساخته شده با استفاده از API های خاص 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

اضافه کردن نظر