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
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
Ilan sa mga pagbabago sa
- 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