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

Թողարկվել է Neovim 0.6.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-ից:

Նոր տարբերակի որոշ փոփոխություններ.

  • В 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.

Source: opennet.ru

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