Veröffentlichung von Neovim 0.6.0, einer modernisierten Version des Vim-Editors

Neovim 0.6.0 wurde veröffentlicht, eine Abzweigung des Vim-Editors, die sich auf die Erhöhung der Erweiterbarkeit und Flexibilität konzentriert. Das Projekt arbeitet seit mehr als sieben Jahren an der Überarbeitung der Vim-Codebasis. Dabei wurden Änderungen vorgenommen, die die Codewartung vereinfachen, eine Arbeitsteilung zwischen mehreren Betreuern ermöglichen und die Schnittstelle vom Basisteil trennen (die Schnittstelle kann sein). geändert werden, ohne die Interna zu berühren) und eine neue erweiterbare Architektur basierend auf Plugins implementieren. Die ursprünglichen Entwicklungen des Projekts werden unter der Apache 2.0-Lizenz vertrieben, und der Basisteil wird unter der Vim-Lizenz vertrieben. Fertige Baugruppen werden für Linux (appimage), Windows und macOS vorbereitet.

Eines der Probleme mit Vim, die zur Entwicklung von Neovim führten, war seine aufgeblähte, monolithische Codebasis, die aus mehr als 300 Zeilen C-Code (C89) bestand. Nur wenige Menschen verstehen alle Nuancen der Vim-Codebasis und alle Änderungen werden von einem Betreuer kontrolliert, was die Wartung und Verbesserung des Editors erschwert. Anstelle des in den Vim-Kern integrierten Codes zur Unterstützung der GUI schlägt Neovim die Verwendung einer universellen Ebene vor, die es Ihnen ermöglicht, Schnittstellen mithilfe verschiedener Toolkits zu erstellen.

Plugins für Neovim werden als separate Prozesse gestartet, für deren Interaktion das MessagePack-Format verwendet wird. Die Interaktion mit Plugins erfolgt asynchron, ohne die Grundkomponenten des Editors zu blockieren. Für den Zugriff auf das Plugin kann ein TCP-Socket verwendet werden, d.h. Das Plugin kann auf einem externen System ausgeführt werden. Gleichzeitig bleibt Neovim abwärtskompatibel mit Vim, unterstützt weiterhin Vimscript (Lua wird als Alternative angeboten) und unterstützt Verbindungen für die meisten Standard-Vim-Plugins. Die erweiterten Funktionen von Neovim können in Plugins verwendet werden, die mit Neovim-spezifischen APIs erstellt wurden.

Derzeit sind bereits rund 130 spezifische Plugins vorbereitet, es stehen Bindungen zur Erstellung von Plugins und zur Implementierung von Schnittstellen mit verschiedenen Programmiersprachen (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) und Frameworks (Qt, ncurses, Node .js, Electron, GTK). Es werden mehrere Optionen für die Benutzeroberfläche entwickelt. GUI-Add-ons ähneln Plugins, initiieren jedoch im Gegensatz zu Plugins Aufrufe von Neovim-Funktionen, während Plugins aus Neovim heraus aufgerufen werden.

Einige der Änderungen in der neuen Version:

  • В 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.

Source: opennet.ru

Kommentar hinzufügen