Нашри 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 метавонад истифода шавад, яъне. плагинро дар системаи беруна кор кардан мумкин аст. Ҳамзамон, Neovim бо Vim ба ақиб мувофиқ боқӣ мемонад, дастгирии Vimscript-ро идома медиҳад (Луа ҳамчун алтернатива пешниҳод карда мешавад) ва пайвастҳоро барои аксари плагинҳои стандартии Vim дастгирӣ мекунад. Хусусиятҳои пешрафтаи Neovim метавонанд дар плагинҳо истифода шаванд, ки бо истифодаи API-ҳои мушаххаси Neovim сохта шудаанд.

Дар айни замон, тақрибан 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 қатъ карда шуд.

Манбаъ: opennet.ru

Илова Эзоҳ