Available ang Neovim 0.4, isang modernized na bersyon ng Vim editor

Nai-publish pakawalan Neovim 0.4, isang tinidor mula sa Vim editor, nakatutok sa pagtaas ng extensibility at flexibility. Mga orihinal na pag-unlad ng proyekto kumalat sa ilalim ng lisensyang Apache 2.0, at ang batayang bahagi sa ilalim ng lisensya ng Vim.

Bilang bahagi ng proyekto ng Neovim, ang Vim code base ay inayos muli sa loob ng higit sa limang taon, bilang resulta kung saan ang mga pagbabago ay ginawa na nagpapasimple sa pagpapanatili ng code, nagbibigay ng paraan ng paghahati ng paggawa sa pagitan ng ilang mga maintainer, paghiwalayin ang interface mula sa base bahagi (maaaring baguhin ang interface nang hindi hinahawakan ang mga panloob) at magpatupad ng bago napapalawak na arkitektura batay sa mga plugin.

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 na pinaghandaan humigit-kumulang 80 partikular na plugin, 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 (Qt5, ncurses, Node.js, Electron, GTK+). Maraming mga pagpipilian sa interface ng gumagamit ay binuo. Ang mga GUI add-on 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.

Ilan sa mga pagbabago sa bagong bersyon:

  • Nagdagdag ng malaking bahagi ng mga bagong function ng API at mga kaganapan sa user interface.
  • Nagdagdag ng bagong karaniwang library na Nvim-Lua para sa pagbuo ng mga plugin sa wikang Lua.
  • Ang pagbuo ng user interface protocol ay nagpapatuloy, na nag-a-update ng impormasyon sa screen sa antas ng mga linya, sa halip na mga indibidwal na character.
  • Nagdagdag ng suporta para sa ganap na mga floating window, na maaaring ilagay sa anumang lokasyon, naka-attach, naka-link sa mga indibidwal na buffer sa pag-edit, at nakapangkat sa Multigrid mode.
  • Nagdagdag ng opsyong 'pumblend' para sa mga translucent na dropdown na menu.

Pinagmulan: opennet.ru

Magdagdag ng komento