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

Neovim 0.6.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 فراخوانی می‌شوند.

برخی از تغییرات نسخه جدید:

  • В vim-скрипты добавлена поддержка локальных переменных, область видимости для которых ограничена только текущим скриптом.
  • Значительно улучшена поддержка языка Lua для разработки плагинов и управления конфигурацией. В vim-скриптах добавлена возможность вызова Lua-функций как методов через указание префикса v:lua (например, «arg1->v:lua.somemod.func(arg2)»).
  • Расширены возможности встроенного LSP-клиента (Language Server Protocol), который можно использовать для выноса логики анализа и автодополнения кода на внешние серверы. Применение LSP позволяет использовать более 150 готовых обработчиков для различных языков программирования, подготовленных для редактора кода Visual Studio Code.
  • Улучшены средства диагностики проблем в коде. Добавлена возможность вывода текста диагностических сообщений и плавающих окон с кодом, связанным с подобными сообщениями. Обеспечена обработка диагностических сообщений, передаваемых LSP-сервером.
  • Добавлена поддержка виртуальных строк, которые могут использоваться, например, для вывода блоков со служебной информацией.
  • Внесены различные оптимизации производительности, например, задействована хэш таблица для подсвечиваемых имён групп.
  • Прекращена поддержка Windows 7 и 32-разрядных сборок для Windows.

منبع: opennet.ru

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