Paglabas ng Neovim 0.7.0, isang modernized na bersyon ng Vim editor

Ang Neovim 0.7.0 ay inilabas, isang tinidor ng Vim editor na nakatuon sa pagpapalawak at kakayahang umangkop. Ang proyekto ay muling gumagawa ng Vim code base sa loob ng higit sa pitong taon, bilang isang resulta kung saan ang mga pagbabago ay ginawa na nagpapasimple sa pagpapanatili ng code, nagbibigay ng isang paraan ng paghahati ng paggawa sa pagitan ng ilang mga maintainer, paghiwalayin ang interface mula sa base na bahagi (ang interface ay maaaring maging nagbago nang hindi hinahawakan ang mga panloob) at magpatupad ng bagong napapalawak na arkitektura batay sa mga plugin. Ang mga orihinal na pagpapaunlad ng proyekto ay ipinamamahagi sa ilalim ng lisensya ng Apache 2.0, at ang pangunahing bahagi ay ipinamamahagi sa ilalim ng lisensya ng Vim. Inihanda ang mga handa na asembliya para sa Linux (appimage), Windows at macOS.

Ang isa sa mga problema sa Vim na nag-udyok sa paglikha ng Neovim ay ang namamaga, monolithic code base nito, na binubuo ng higit sa 300 libong linya ng C (C89) code. Iilan lamang sa mga tao ang nakakaunawa sa lahat ng mga nuances ng Vim codebase, at lahat ng mga pagbabago ay kinokontrol ng isang maintainer, na nagpapahirap sa pagpapanatili at pagpapabuti ng editor. Sa halip na ang code na binuo sa Vim core upang suportahan ang GUI, ang Neovim ay nagmumungkahi ng paggamit ng isang unibersal na layer na nagbibigay-daan sa iyo upang lumikha ng mga interface gamit ang iba't ibang mga toolkit.

Ang mga Plugin para sa Neovim ay inilunsad bilang hiwalay na mga proseso, para sa pakikipag-ugnayan kung saan ginagamit ang format ng MessagePack. Ang pakikipag-ugnayan sa mga plugin ay isinasagawa nang asynchronous, nang hindi hinaharangan ang mga pangunahing bahagi ng editor. Upang ma-access ang plugin, maaaring gumamit ng TCP socket, i.e. ang plugin ay maaaring patakbuhin sa isang panlabas na sistema. Kasabay nito, ang Neovim ay nananatiling backward compatible sa Vim, patuloy na sumusuporta sa Vimscript (Inaalok ang Lua bilang alternatibo) at sumusuporta sa mga koneksyon para sa karamihan ng mga karaniwang Vim plugin. Maaaring gamitin ang mga advanced na feature ng Neovim sa mga plugin na binuo gamit ang mga API na partikular sa Neovim.

Sa kasalukuyan, humigit-kumulang 130 partikular na plugin ang naihanda na, magagamit ang mga binding para sa paglikha ng mga plugin at pagpapatupad ng mga interface gamit ang iba't ibang mga programming language (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) at mga frameworks (Qt, ncurses, Node .js, Electron, GTK). Maraming mga pagpipilian sa interface ng gumagamit ay binuo. Ang mga add-on ng GUI ay halos katulad ng mga plugin, ngunit hindi tulad ng mga plugin, sinimulan nila ang mga tawag sa mga function ng Neovim, habang ang mga plugin ay tinatawag mula sa loob ng Neovim.

Nag-aalok ang bagong bersyon ng paunang suporta para sa malayong trabaho, na nagbibigay-daan sa iyong patakbuhin ang Neovim sa server at kumonekta dito mula sa client system gamit ang isang hiwalay na ui_client. Kasama sa iba pang mga pagbabago ang: ang suporta para sa Python 2 ay hindi na ipinagpatuloy, ang paggamit ng mga function ng Lua sa keymap ay pinahintulutan, ang mga bagong command ay naidagdag sa API, ang kakayahang gamitin ang wikang Lua para sa pagbuo ng mga plugin at ang pamamahala ng pagsasaayos ay makabuluhang pinalawak, Ang mga tool para sa pag-diagnose ng mga problema sa code ay napabuti, ang suporta para sa pandaigdigang status bar ay naidagdag, ang mga pag-optimize ng pagganap ay naisagawa. Ang mga kakayahan ng built-in na LSP client (Language Server Protocol) ay pinalawak, na maaaring magamit upang ilipat ang logic ng pagsusuri at pagkumpleto ng code sa mga panlabas na server.

Pinagmulan: opennet.ru

Magdagdag ng komento