Udgivelse af Neovim 0.7.0, en moderniseret version af Vim-editoren

Neovim 0.7.0 er blevet frigivet, en forgrening af Vim-editoren fokuseret på at øge udvidelsesmuligheder og fleksibilitet. Projektet har omarbejdet Vim-kodebasen i mere end syv år, som et resultat af, at der foretages ændringer, der forenkler kodevedligeholdelsen, giver mulighed for at dele arbejdet mellem flere vedligeholdere, adskiller grænsefladen fra basisdelen (grænsefladen kan ændret uden at røre det interne) og implementere en ny udvidelsesbar arkitektur baseret på plugins. De oprindelige udviklinger af projektet er distribueret under Apache 2.0-licensen, og den grundlæggende del er distribueret under Vim-licensen. Færdiglavede samlinger er forberedt til Linux (appimage), Windows og macOS.

Et af problemerne med Vim, der foranledigede oprettelsen af ​​Neovim, var dens oppustede, monolitiske kodebase, bestående af mere end 300 tusind linjer C (C89) kode. Kun få mennesker forstår alle nuancerne i Vim-kodebasen, og alle ændringer styres af én vedligeholder, hvilket gør det vanskeligt at vedligeholde og forbedre editoren. I stedet for koden, der er indbygget i Vim-kernen for at understøtte GUI, foreslår Neovim at bruge et universelt lag, der giver dig mulighed for at oprette grænseflader ved hjælp af forskellige værktøjssæt.

Plugins til Neovim lanceres som separate processer, til interaktion, hvormed MessagePack-formatet bruges. Interaktion med plugins udføres asynkront uden at blokere editorens grundlæggende komponenter. For at få adgang til pluginnet kan der bruges en TCP socket, dvs. plugin'et kan køres på et eksternt system. Samtidig forbliver Neovim bagudkompatibel med Vim, fortsætter med at understøtte Vimscript (Lua tilbydes som et alternativ) og understøtter forbindelser til de fleste standard Vim-plugins. Neovims avancerede funktioner kan bruges i plugins bygget ved hjælp af Neovim-specifikke API'er.

I øjeblikket er omkring 130 specifikke plugins allerede blevet forberedt, bindinger er tilgængelige til at skabe plugins og implementere grænseflader ved hjælp af forskellige programmeringssprog (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) og frameworks (Qt, ncurses, Node .js, Electron, GTK). Flere muligheder for brugergrænseflader er under udvikling. GUI-tilføjelser minder meget om plugins, men i modsætning til plugins starter de opkald til Neovim-funktioner, mens plugins kaldes inde fra Neovim.

Den nye version tilbyder indledende support til fjernarbejde, så du kan køre Neovim på serveren og oprette forbindelse til den fra klientsystemet ved hjælp af en separat ui_client. Andre ændringer omfatter: understøttelse af Python 2 er blevet afbrudt, brugen af ​​Lua-funktioner i keymap er blevet tilladt, nye kommandoer er blevet tilføjet til API, muligheden for at bruge Lua-sproget til at udvikle plugins og konfigurationsstyring er blevet betydeligt udvidet, værktøjer til at diagnosticere problemer i kode er blevet forbedret, understøttelse af den globale statuslinje er blevet tilføjet, ydeevneoptimeringer er blevet udført. Mulighederne for den indbyggede LSP-klient (Language Server Protocol) er blevet udvidet, som kan bruges til at overføre analyselogikken og kodefuldførelsen til eksterne servere.

Kilde: opennet.ru

Tilføj en kommentar