Im Rahmen des Neovim-Projekts wird die Vim-Codebasis seit mehr als fünf Jahren überarbeitet, wodurch Änderungen vorgenommen werden, die die Codepflege vereinfachen, eine Arbeitsteilung zwischen mehreren Betreuern ermöglichen und die Schnittstelle von der Schnittstelle trennen Basisteil (die Schnittstelle kann geändert werden, ohne die Innenteile zu berühren) und ein neues implementieren
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.
Zur Zeit schon
Einige der Änderungen in
- Viele neue API-Funktionen und Benutzeroberflächenereignisse hinzugefügt.
- Eine neue Standardbibliothek Nvim-Lua für die Entwicklung von Plugins in der Lua-Sprache hinzugefügt.
- Die Entwicklung des Benutzerschnittstellenprotokolls geht weiter und aktualisiert die Informationen auf dem Bildschirm auf der Ebene von Zeilen und nicht auf der Ebene einzelner Zeichen.
- Unterstützung für vollwertige schwebende Fenster hinzugefügt, die an beliebiger Stelle platziert, angehängt, mit einzelnen Bearbeitungspuffern verknüpft und im Multigrid-Modus gruppiert werden können.
- Option „Pumblend“ für durchscheinende Dropdown-Menüs hinzugefügt.
Source: opennet.ru