Neovim 0.5 ist verfügbar, eine modernisierte Version des Vim-Editors

Nach fast zweijähriger Entwicklungszeit wurde Neovim 0.5 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.

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:

  • In Lua wurde ein integrierter LSP-Client (Language Server Protocol) hinzugefügt, der zur Verbindung mit externen Diensten zur Analyse und Codevervollständigung verwendet werden kann.
  • Eine API hinzugefügt, um das Design von Zuordnungspuffern zu steuern.
  • Es wurde eine API hinzugefügt, um erweiterte Tags zum Verfolgen von Änderungen auf Byte-Ebene zu verwenden.
  • Erweiterte Unterstützung für Lua als Sprache für die Plugin-Entwicklung und Konfigurationsverwaltung.
  • Experimentelle Unterstützung für die Tree-Sitter-Parsing-Engine hinzugefügt.

Source: opennet.ru

Kommentar hinzufügen