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

Neovim 0.7.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.

Die neue Version bietet anfängliche Unterstützung für Remote-Arbeit, sodass Sie Neovim auf dem Server ausführen und vom Client-System aus über einen separaten ui_client eine Verbindung herstellen können. Zu den weiteren Änderungen gehören: Die Unterstützung für Python 2 wurde eingestellt, die Verwendung von Lua-Funktionen in der Keymap wurde erlaubt, der API wurden neue Befehle hinzugefügt, die Möglichkeit, die Lua-Sprache für die Entwicklung von Plugins und das Konfigurationsmanagement zu verwenden, wurde deutlich erweitert, Tools zur Diagnose von Problemen im Code wurden verbessert, Unterstützung für die globale Statusleiste wurde hinzugefügt, Leistungsoptimierungen wurden durchgeführt. Die Fähigkeiten des integrierten LSP-Clients (Language Server Protocol) wurden erweitert, mit dem sich die Analyselogik und Code-Vervollständigung auf externe Server übertragen lässt.

Source: opennet.ru

Kommentar hinzufügen