ΠΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΡΠ΅Π»ΠΈΠ· Neovim 0.7.0, ΠΎΡΠ²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ ΠΎΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° Vim, ΡΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠΈ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ. Π ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌΠΈ Π»Π΅Ρ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ Vim, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Π½ΠΎΡΡΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΡΠΏΡΠΎΡΠ°ΡΡΠΈΠ΅ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΡΠ΄Π° ΠΌΠ΅ΠΆΠ΄Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΌΡΠΉΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ, ΠΎΡΠ΄Π΅Π»ΡΡΡΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΎΡ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΡΠ°ΡΡΠΈ (ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡΡ Π½Π΅ ΡΡΠΎΠ³Π°Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΎΡΡΠΈ) ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠ΅ Π½ΠΎΠ²ΡΡ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ². ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠ΅ Π½Π°ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0, Π° Π±Π°Π·ΠΎΠ²Π°Ρ ΡΠ°ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ Vim. ΠΠΎΡΠΎΠ²ΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Ρ Π΄Π»Ρ Linux (appimage), Windows ΠΈ macOS.
Enye yezinkinga nge-Vim edale ukuthi kudalwe i-Neovim isisekelo sayo sekhodi ekhukhumele, esine-monolithic, ehlanganisa imigqa engaphezu kwezinkulungwane ezingama-300 yekhodi C (C89). Abantu abambalwa kuphela abaqonda wonke ama-nuances we-Vim codebase, futhi zonke izinguquko zilawulwa umnakekeli oyedwa, okwenza kube nzima ukugcina nokuthuthukisa umhleli. Esikhundleni sekhodi eyakhelwe ku-Vim core ukusekela i-GUI, i-Neovim ihlongoza ukusebenzisa isendlalelo sendawo yonke esikuvumela ukuthi udale izixhumanisi usebenzisa amathuluzi ahlukahlukene.
Ama-plugin e-Neovim ethulwa njengezinqubo ezihlukene, zokusebenzelana lapho kusetshenziswa ifomethi ye-MessagePack. Ukusebenzisana nama-plugin kwenziwa ngokulinganayo, ngaphandle kokuvimbela izingxenye eziyisisekelo zomhleli. Ukuze ufinyelele i-plugin, isokhethi ye-TCP ingasetshenziswa, i.e. i-plugin ingasebenza kusistimu yangaphandle. Ngasikhathi sinye, i-Neovim ihlala ihlehla ihambisana ne-Vim, iyaqhubeka nokusekela i-Vimscript (i-Lua inikezwa njengenye indlela) futhi isekela ukuxhumana kwama-plugin amaningi we-Vim ajwayelekile. Izici ezithuthukile ze-Neovim zingasetshenziswa kuma-plugin akhiwe kusetshenziswa ama-Neovim-specific API.
Njengamanje, cishe ama-plugin athile angu-130 asevele elungisiwe, izibopho ziyatholakala ekudaleni ama-plugin nokusebenzisa izixhumanisi kusetshenziswa izilimi ezihlukahlukene zokuhlela (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) kanye nezinhlaka (Qt, ncurses, Node .js, Electron, GTK). Izinketho zokusetshenziswa kubonwa ezimbalwa ziyathuthukiswa. Izengezo ze-GUI zifana nama-plugin, kodwa ngokungafani nama-plugin, aqala izingcingo eziya emisebenzini ye-Neovim, kuyilapho ama-plugin ebizwa kusukela ngaphakathi kwe-Neovim.
Π Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ Neovim Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΊ Π½Π΅ΠΌΡ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ui_client. Π‘ΡΠ΅Π΄ΠΈ Π΄ΡΡΠ³ΠΈΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ: ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Python 2, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Lua-ΡΡΠ½ΠΊΡΠΈΠΉ Π² keymap, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² API, Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ·ΡΠΊΠ° Lua Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ, ΡΠ»ΡΡΡΠ΅Π½Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π² ΠΊΠΎΠ΄Π΅, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. Π Π°ΡΡΠΈΡΠ΅Π½Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ LSP-ΠΊΠ»ΠΈΠ΅Π½ΡΠ° (Language Server Protocol), ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π²ΡΠ½ΠΎΡΠ° Π»ΠΎΠ³ΠΈΠΊΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ Π°Π²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΡ.
Source: opennet.ru