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

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

Några av ändringarna i den nya versionen:

  • В vim-скрипты добавлена поддержка локальных переменных, область видимости для которых ограничена только текущим скриптом.
  • Значительно улучшена поддержка языка Lua для разработки плагинов и управления конфигурацией. В vim-скриптах добавлена возможность вызова Lua-функций как методов через указание префикса v:lua (например, «arg1->v:lua.somemod.func(arg2)»).
  • Расширены возможности встроенного LSP-клиента (Language Server Protocol), который можно использовать для выноса логики анализа и автодополнения кода на внешние серверы. Применение LSP позволяет использовать более 150 готовых обработчиков для различных языков программирования, подготовленных для редактора кода Visual Studio Code.
  • Улучшены средства диагностики проблем в коде. Добавлена возможность вывода текста диагностических сообщений и плавающих окон с кодом, связанным с подобными сообщениями. Обеспечена обработка диагностических сообщений, передаваемых LSP-сервером.
  • Добавлена поддержка виртуальных строк, которые могут использоваться, например, для вывода блоков со служебной информацией.
  • Внесены различные оптимизации производительности, например, задействована хэш таблица для подсвечиваемых имён групп.
  • Прекращена поддержка Windows 7 и 32-разрядных сборок для Windows.

Källa: opennet.ru

Lägg en kommentar