Neovim 0.7.0-ի թողարկումը, Vim խմբագրի արդիականացված տարբերակը

Опубликован релиз Neovim 0.7.0, ответвления от редактора Vim, сфокусированного на повышении расширяемости и гибкости. В рамках проекта уже более семи лет проводится переработка кодовой базы Vim, в результате которой вносятся изменения, упрощающие сопровождение кода, предоставляющие средства разделения труда между несколькими мэйнтейнерами, отделяющие интерфейс от базовой части (интерфейс можно менять не трогая внутренности) и реализующие новую расширяемую архитектуру на основе плагинов. Оригинальные наработки проекта распространяются под лицензией Apache 2.0, а базовая часть под лицензией Vim. Готовые сборки подготовлены для Linux (appimage), Windows и macOS.

Vim-ի հետ կապված խնդիրներից մեկը, որը դրդեց ստեղծել Neovim-ը, նրա փքված, մոնոլիտ ծածկագրի հիմքն էր, որը բաղկացած է ավելի քան 300 հազար տող C (C89) կոդից: Միայն քչերն են հասկանում Vim կոդերի բազայի բոլոր նրբությունները, և բոլոր փոփոխությունները վերահսկվում են մեկ սպասարկողի կողմից, ինչը դժվարացնում է խմբագրի պահպանումն ու կատարելագործումը։ Vim միջուկում ներկառուցված կոդի փոխարեն՝ GUI-ին աջակցելու համար, Neovim-ն առաջարկում է օգտագործել ունիվերսալ շերտ, որը թույլ է տալիս ստեղծել ինտերֆեյսներ՝ օգտագործելով տարբեր գործիքակազմեր:

Neovim-ի պլագինները գործարկվում են որպես առանձին գործընթացներ, որոնց հետ փոխգործակցության համար օգտագործվում է MessagePack ձևաչափը: Փլագինների հետ փոխազդեցությունն իրականացվում է ասինխրոն՝ առանց խմբագրի հիմնական բաղադրիչները արգելափակելու։ Փլագին մուտք գործելու համար կարող է օգտագործվել TCP վարդակից, այսինքն. plugin-ը կարող է գործարկվել արտաքին համակարգով: Միևնույն ժամանակ, Neovim-ը մնում է հետընթաց համատեղելի Vim-ի հետ, շարունակում է աջակցել Vimscript-ին (Lua-ն առաջարկվում է որպես այլընտրանք) և աջակցում է կապեր ստանդարտ Vim հավելվածների մեծ մասի համար։ Neovim-ի առաջադեմ հնարավորությունները կարող են օգտագործվել Neovim-ի հատուկ API-ների միջոցով կառուցված պլագիններում:

Ներկայումս արդեն պատրաստվել են մոտ 130 հատուկ փլագիններ, հասանելի են կապանքներ՝ տարբեր ծրագրավորման լեզուների (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) և շրջանակների (Qt, ncurses, Node .js, Electron, GTK): Օգտագործողի միջերեսի մի քանի տարբերակներ են մշակվում: GUI հավելումները շատ նման են պլագիններին, բայց ի տարբերություն պլագինների, նրանք զանգեր են նախաձեռնում դեպի Neovim գործառույթները, մինչդեռ պլագինները կանչվում են Neovim-ից:

В новой версии предложена начальная поддержка удалённой работы, позволяющая запустить Neovim на сервере и подключаться к нему с клиентской системы, используя отдельный ui_client. Среди других изменений: прекращена поддержка Python 2, разрешено использовании Lua-функций в keymap, добавлены новые команды в API, значительно расширены возможности по использованию языка Lua для разработки плагинов и управления конфигурацией, улучшены средства диагностики проблем в коде, добавлена поддержка глобальной строки состояния, проведены оптимизации производительности. Расширены возможности встроенного LSP-клиента (Language Server Protocol), который можно использовать для выноса логики анализа и автодополнения кода на внешние серверы.

Source: opennet.ru

Добавить комментарий