Avaldatud on Neovim 0.6.0 vĂ€ljaanne, mis on haru Vim redigeerijast, keskendudes tĂ€iustamise ja paindlikkuse suurendamisele. Projekti raames on viimase seitsme aasta jooksul toimunud Vim koodibaasi ĂŒmbersuunamine, mille tulemusel on tehtud muudatusi, mis lihtsustavad koodi hooldust, pakuvad vĂ”imalusi töö jagamiseks mitu hooldajat ning eraldavad liidese pĂ”hiosast (liidest saab muuta, puudutamata sisemist osa) ja rakendavad uut tĂ€iendatavat arhitektuuri, mis pĂ”hineb pistikprogrammide sĂŒsteemil. Projekti originaaltooted jagatakse Apache 2.0 litsentsi all, pĂ”hiosa aga Vim litsentsi all. Valmis komplektid on ette valmistatud Linuxile (appimage), Windowsile ja macOS-ile.
Vim-i probleemidest, mis inspireerisid Neovimi loomist, tĂ”statatakse paisutatud monoliitne koodibaas, mis koosneb rohkem kui 300 000 reas C (C89) keeles. KĂ”igis Vim-i koodibaasi nĂŒanssides mĂ”istab vaid mĂ”ned inimesed, samas kui kĂ”iki muudatusi kontrollib ĂŒks hooldaja, mis raskendab redaktori hooldust ja arendamist. Neovim pakub GUI toe toetamiseks kaasasoleva Vim-i koodi asemel universaalset kihte, mis vĂ”imaldab erinevate tööriistade kasutamist liideste loomisel.
Neovimi pluginate kĂ€ivitatakse eraldi protsessidena, mille suhtlemiseks kasutatakse MessagePack formaati. Pluginate vaheline suhtlus toimub asĂŒnkroonselt ning ei blokeeri toimetaja pĂ”hikomponente. Pluginatele juurdepÀÀsuks vĂ”ib kasutada TCP-soket, st plugin vĂ”ib töötada vĂ€lises sĂŒsteemis. Sellegipoolest on Neovim tĂ€ielikult ĂŒhilduv Vimi ka, toetades Vimscripti (alternatiivina on pakutud Lua) ning enamikku Viimi vaikimisi pluginaid. Neovimi tĂ€iendavaid vĂ”imalusi saab kasutada pluginate arendamisel, mis on loodud Neovimile spetsiifilist API-d kasutades.
Praegu on valmis juba umbes 130 spetsiaalset plugini, saadaval on sidemed pluginite ja liideste loomiseks erinevate programmeerimiskeelte (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) ja raamistikud (Qt, ncurses, Node.js, Electron, GTK) kasutamiseks. Arendatakse mitmeid kasutajaliidese variante. GUI-lisandmoodulid meenutavad paljuski pluginaid, kuid erinevalt pluginatest kÀivitavad need Neovimi funktsioonide kutsumist, samas kui pluginaid kutsutakse Neovimist.
MÔned muutused uues versioonis:
- Vim-skriptidesse on lisatud kohalike muutujate tugi, mille ulatus on piiratud ainult jooksva skriptiga.
- Oluliselt on paranenud Lua keele tugi pistikprogrammide arendamiseks ja konfiguratsiooni haldamiseks. Vim-skriptidesse on lisatud vÔimalus kutsuda Lua funktsioone meetoditena, kasutades v:lua prefiksit (nÀiteks «arg1->v:lua.somemod.func(arg2)»).
- Sisemine LSP-kliendi (Language Server Protocol) vĂ”imekusse, mida saab kasutada koodi analĂŒĂŒsi ja automaatse tĂ€itmise loogika vĂ€liseks viimiseks. serveridLSP rakendamine vĂ”imaldab kasutada enam kui 150 valmis töötlejat erinevate programmeerimiskeelte jaoks, mis on ette valmistatud Visual Studio Code koodiredaktori jaoks.
- Koodi probleemide diagnostika tööriistu on tÀiustatud. Lisatud on diagnostiliste sÔnumite ja seotud koodiga pop-up akende vÀljundite kuvamise vÔimalus. Tagatud on LSP-serverilt edastatavate diagnostiliste sÔnumite kÀsitlemine.
- Lisatud on virtuaalsete ridade tugi, mida saab kasutada nÀiteks teenusteabe plokkide kuvamiseks.
- Tehtud on erinevaid jĂ”udluse optimeerimisi, nĂ€iteks on kasutusele vĂ”etud rippmenĂŒĂŒde nimede esiletĂ”stmiseks hĂŒbriid, mis pĂ”hineb hash-tabelitel.
- Windows 7 ja 32-bitiste versioonide toega on lÔpetatud.
Allikas: opennet.ru
