विम संपादक का आधुनिक संस्करण, नियोविम 0.7.0 का विमोचन

Опубликован релиз Neovim 0.7.0, ответвления от редактора Vim, сфокусированного на повышении расширяемости и гибкости. В рамках проекта уже более семи лет проводится переработка кодовой базы Vim, в результате которой вносятся изменения, упрощающие сопровождение кода, предоставляющие средства разделения труда между несколькими мэйнтейнерами, отделяющие интерфейс от базовой части (интерфейс можно менять не трогая внутренности) и реализующие новую расширяемую архитектуру на основе плагинов. Оригинальные наработки проекта распространяются под лицензией Apache 2.0, а базовая часть под лицензией Vim. Готовые сборки подготовлены для Linux (appimage), Windows и macOS.

विम के साथ एक समस्या जिसने नियोविम के निर्माण को प्रेरित किया, वह इसका फूला हुआ, अखंड कोड आधार था, जिसमें C (C300) कोड की 89 हजार से अधिक लाइनें शामिल थीं। केवल कुछ ही लोग विम कोडबेस की सभी बारीकियों को समझते हैं, और सभी परिवर्तनों को एक अनुरक्षक द्वारा नियंत्रित किया जाता है, जिससे संपादक को बनाए रखना और सुधारना मुश्किल हो जाता है। जीयूआई का समर्थन करने के लिए विम कोर में निर्मित कोड के बजाय, नियोविम एक सार्वभौमिक परत का उपयोग करने का प्रस्ताव करता है जो आपको विभिन्न टूलकिट का उपयोग करके इंटरफेस बनाने की अनुमति देता है।

नियोविम के लिए प्लगइन्स को अलग-अलग प्रक्रियाओं के रूप में लॉन्च किया जाता है, जिसके साथ इंटरेक्शन के लिए मैसेजपैक प्रारूप का उपयोग किया जाता है। संपादक के मूल घटकों को अवरुद्ध किए बिना, प्लगइन्स के साथ इंटरैक्शन अतुल्यकालिक रूप से किया जाता है। प्लगइन तक पहुंचने के लिए, एक टीसीपी सॉकेट का उपयोग किया जा सकता है, यानी। प्लगइन को बाहरी सिस्टम पर चलाया जा सकता है। साथ ही, नियोविम विम के साथ पीछे की ओर संगत रहता है, विम्सस्क्रिप्ट का समर्थन करना जारी रखता है (लुआ को एक विकल्प के रूप में पेश किया जाता है) और अधिकांश मानक विम प्लगइन्स के लिए कनेक्शन का समर्थन करता है। नियोविम की उन्नत सुविधाओं का उपयोग नियोविम-विशिष्ट एपीआई का उपयोग करके निर्मित प्लगइन्स में किया जा सकता है।

В настоящее время уже подготовлено около 130 специфичных плагинов, доступны биндинги для создания плагинов и реализаций интерфейсов с использованием различных языков программирования (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) и фреймворков (Qt, ncurses, Node.js, Electron, GTK). Развивается несколько вариантов пользовательского интерфейса. GUI-надстройки во многом напоминают плагины, но, в отличие от плагинов, они инициируют вызов функций Neovim, в то время как плагины вызываются из Neovim.

В новой версии предложена начальная поддержка удалённой работы, позволяющая запустить Neovim на сервере и подключаться к нему с клиентской системы, используя отдельный ui_client. Среди других изменений: прекращена поддержка Python 2, разрешено использовании Lua-функций в keymap, добавлены новые команды в API, значительно расширены возможности по использованию языка Lua для разработки плагинов и управления конфигурацией, улучшены средства диагностики проблем в коде, добавлена поддержка глобальной строки состояния, проведены оптимизации производительности. Расширены возможности встроенного LSP-клиента (Language Server Protocol), который можно использовать для выноса логики анализа и автодополнения кода на внешние серверы.

स्रोत: opennet.ru

एक टिप्पणी जोड़ें