Нашри 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 метавонад истифода шавад, яъне. плагинро дар системаи беруна кор кардан мумкин аст. Ҳамзамон, 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 даъват мешаванд.

Версияи нав дастгирии ибтидоиро барои кори дурдаст пешниҳод мекунад, ки ба шумо имкон медиҳад, ки Neovim-ро дар сервер иҷро кунед ва ба он аз системаи муштарӣ бо истифода аз ui_client алоҳида пайваст шавед. Дигар тағйиротҳо иборатанд аз: дастгирии Python 2 қатъ карда шуд, истифодаи функсияҳои Lua дар харитаи клавиатура иҷозат дода шуд, фармонҳои нав ба API илова карда шуданд, қобилияти истифодаи забони Lua барои таҳияи плагинҳо ва идоракунии конфигуратсия ба таври назаррас васеъ карда шуд, воситаҳо барои ташхиси мушкилот дар код такмил дода шуданд, дастгирӣ барои сатри ҳолати глобалӣ илова карда шуд, оптимизатсияи фаъолият анҷом дода шуд. Имкониятҳои муштарии дарунсохташудаи LSP (Language Server Protocol) васеъ карда шуданд, ки метавонанд барои интиқоли мантиқи таҳлил ва анҷоми код ба серверҳои беруна истифода шаванд.

Манбаъ: opennet.ru

Илова Эзоҳ