Tso tawm ntawm Neovim 0.7.0, ib qho kev hloov kho tshiab ntawm Vim editor

Neovim 0.7.0 tau raug tso tawm, ib rab diav rawg ntawm Vim editor tsom mus rau kev nthuav dav ntxiv thiab yoog raws. Qhov project tau rov ua dua Vim li cas code puag rau ntau tshaj xya xyoo, vim tias qhov kev hloov pauv tau ua kom yooj yim rau kev tswj hwm txoj cai, muab kev faib ua haujlwm ntawm ntau tus neeg saib xyuas, cais lub interface los ntawm lub hauv paus ib feem (lub interface tuaj yeem ua tau. hloov tsis tau kov lub internals) thiab siv ib tug tshiab extensible architecture raws li plugins. Thawj qhov kev txhim kho ntawm txoj haujlwm tau muab faib raws li Apache 2.0 daim ntawv tso cai, thiab qhov tseem ceeb yog faib raws li Daim ntawv tso cai Vim. Cov rooj sib txoos npaj tau npaj rau Linux (appimage), Windows thiab macOS.

Ib qho ntawm cov teeb meem nrog Vim uas tau ua rau kev tsim ntawm Neovim yog nws bloated, monolithic code puag, muaj ntau tshaj 300 txhiab kab ntawm C (C89) code. Tsuas yog ob peb tus neeg nkag siab tag nrho cov nuances ntawm Vim codebase, thiab tag nrho cov kev hloov pauv yog tswj los ntawm ib tus neeg saib xyuas, uas ua rau nws nyuaj rau kev tswj hwm thiab txhim kho cov neeg kho. Hloov chaw ntawm txoj cai tsim rau hauv Vim core los txhawb GUI, Neovim tawm tswv yim siv cov txheej txheem thoob ntiaj teb uas tso cai rau koj los tsim kev sib tshuam siv ntau yam khoom siv.

Plugins rau Neovim tau pib ua cov txheej txheem cais, rau kev sib cuam tshuam uas siv MessagePack hom. Kev sib cuam tshuam nrog plugins yog ua tiav asynchronously, tsis thaiv cov ntsiab lus ntawm tus editor. Txhawm rau nkag mus rau lub plugin, lub qhov (socket) TCP tuaj yeem siv tau, piv txwv li. lub plugin tuaj yeem khiav ntawm qhov system sab nraud. Nyob rau tib lub sijhawm, Neovim tseem rov qab sib haum nrog Vim, txuas ntxiv txhawb Vimscript (Lua yog muab los ua lwm txoj hauv kev) thiab txhawb kev sib txuas rau feem ntau tus qauv Vim plugins. Neovim cov yam ntxwv siab heev tuaj yeem siv tau hauv plugins tsim siv Neovim-specific APIs.

Tam sim no, txog 130 qhov tshwj xeeb plugins twb tau npaj lawm, kev khi muaj nyob rau hauv kev tsim plugins thiab kev siv interfaces siv ntau hom lus programming ​​(C ++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) thiab lub moj khaum (Qt, ncurses, Node .js, Electron, GTK). Muaj ob peb tus neeg siv interface xaiv tau raug tsim. GUI add-ons zoo li plugins, tab sis tsis zoo li plugins, lawv pib hu rau Neovim ua haujlwm, thaum plugins raug hu los ntawm hauv Neovim.

Tus tshiab version muaj kev txhawb nqa thawj zaug rau kev ua haujlwm nyob deb, tso cai rau koj khiav Neovim ntawm lub server thiab txuas mus rau nws los ntawm cov neeg siv khoom siv cais ui_client. Lwm yam kev hloov pauv suav nrog: kev txhawb nqa rau Python 2 tau raug txiav lawm, kev siv Lua ua haujlwm hauv keymap tau tso cai, cov lus txib tshiab tau ntxiv rau API, muaj peev xwm siv Lua lus los tsim plugins thiab kev tswj hwm kev teeb tsa tau nthuav dav, cov cuab yeej kuaj xyuas cov teeb meem hauv cov lej tau raug txhim kho, kev txhawb nqa rau lub ntiaj teb xwm txheej bar tau ntxiv, kev ua haujlwm tau zoo tau ua tiav. Lub peev xwm ntawm cov neeg siv LSP built-in (Language Server Protocol) tau nthuav dav, uas tuaj yeem siv los hloov cov kev soj ntsuam kev soj ntsuam thiab cov lej ua tiav rau cov servers sab nraud.

Tau qhov twg los: opennet.ru

Ntxiv ib saib