Utgivning av Neovim 0.7.0, en moderniserad version av Vim-redigeraren

Neovim 0.7.0 har släppts, en gaffel från Vim-redigeraren fokuserad på att öka töjbarheten och flexibiliteten. Projektet har omarbetat Vim-kodbasen i mer än sju år, som ett resultat av att ändringar görs som förenklar kodunderhållet, ger ett sätt att fördela arbetet mellan flera underhållare, separerar gränssnittet från basdelen (gränssnittet kan vara ändras utan att röra det interna) och implementera en ny utökningsbar arkitektur baserat på plugins. Den ursprungliga utvecklingen av projektet distribueras under Apache 2.0-licensen, och den grundläggande delen distribueras under Vim-licensen. Färdiga sammansättningar är förberedda för Linux (appimage), Windows och macOS.

Ett av problemen med Vim som föranledde skapandet av Neovim var dess uppsvällda, monolitiska kodbas, bestående av mer än 300 tusen rader C (C89)-kod. Endast ett fåtal personer förstår alla nyanser i Vim-kodbasen, och alla ändringar kontrolleras av en underhållare, vilket gör det svårt att underhålla och förbättra redigeraren. Istället för koden inbyggd i Vim-kärnan för att stödja GUI, föreslår Neovim att du använder ett universellt lager som låter dig skapa gränssnitt med hjälp av olika verktygssatser.

Plugins för Neovim lanseras som separata processer, för interaktion med vilka MessagePack-formatet används. Interaktion med plugins utförs asynkront, utan att blockera de grundläggande komponenterna i editorn. För att komma åt pluginet kan ett TCP-uttag användas, d.v.s. plugin-programmet kan köras på ett externt system. Samtidigt förblir Neovim bakåtkompatibel med Vim, fortsätter att stödja Vimscript (Lua erbjuds som ett alternativ) och stöder anslutningar för de flesta vanliga Vim-plugins. Neovims avancerade funktioner kan användas i plugins byggda med hjälp av Neovim-specifika API:er.

För närvarande har cirka 130 specifika plugins redan förberetts, bindningar är tillgängliga för att skapa plugins och implementera gränssnitt med olika programmeringsspråk (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) och ramverk (Qt, ncurses, Node .js, Electron, GTK). Flera användargränssnittsalternativ utvecklas. GUI-tillägg liknar plugins på många sätt, men till skillnad från plugins initierar de anrop till Neovim-funktioner, medan plugins anropas inifrån Neovim.

Den nya versionen erbjuder initialt stöd för fjärrarbete, vilket gör att du kan köra Neovim på servern och ansluta till den från klientsystemet med en separat ui_client. Andra förändringar inkluderar: stödet för Python 2 har upphört, användningen av Lua-funktioner i keymap har tillåtits, nya kommandon har lagts till i API:t, möjligheten att använda Lua-språket för att utveckla plugins och konfigurationshantering har utökats avsevärt, verktyg för att diagnostisera problem i kod har förbättrats, stöd för den globala statusraden har lagts till, prestandaoptimeringar har genomförts. Möjligheterna hos den inbyggda LSP-klienten (Language Server Protocol) har utökats, vilket kan användas för att överföra analyslogiken och kodkompletteringen till externa servrar.

Källa: opennet.ru

Lägg en kommentar