ΠΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΡΠ΅Π»ΠΈΠ· Neovim 0.7.0, ΠΎΡΠ²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ ΠΎΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° Vim, ΡΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠΈ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ. Π ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌΠΈ Π»Π΅Ρ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ Vim, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Π½ΠΎΡΡΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΡΠΏΡΠΎΡΠ°ΡΡΠΈΠ΅ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΡΠ΄Π° ΠΌΠ΅ΠΆΠ΄Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΌΡΠΉΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ, ΠΎΡΠ΄Π΅Π»ΡΡΡΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΎΡ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΡΠ°ΡΡΠΈ (ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡΡ Π½Π΅ ΡΡΠΎΠ³Π°Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΎΡΡΠΈ) ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠ΅ Π½ΠΎΠ²ΡΡ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ². ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠ΅ Π½Π°ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0, Π° Π±Π°Π·ΠΎΠ²Π°Ρ ΡΠ°ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ Vim. ΠΠΎΡΠΎΠ²ΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Ρ Π΄Π»Ρ Linux (appimage), Windows ΠΈ macOS.
Salah sawijining masalah karo Vim sing nyebabake nggawe Neovim yaiku basis kode monolitik sing kembung, sing dumadi saka luwih saka 300 ewu baris kode C (C89). Mung sawetara wong sing ngerti kabeh nuansa codebase Vim, lan kabeh owah-owahan dikontrol dening siji maintainer, sing ndadekake angel kanggo njaga lan nambah editor. Tinimbang kode sing dibangun ing inti Vim kanggo ndhukung GUI, Neovim ngusulake nggunakake lapisan universal sing ngidini sampeyan nggawe antarmuka nggunakake macem-macem toolkit.
Plugins kanggo Neovim dibukak minangka pangolahan kapisah, kanggo interaksi karo kang format MessagePack digunakake. Interaksi karo plugin ditindakake kanthi ora sinkron, tanpa ngalangi komponen dhasar editor. Kanggo ngakses plugin, soket TCP bisa digunakake, yaiku. plugin bisa mbukak ing sistem external. Ing wektu sing padha, Neovim tetep kompatibel karo Vim, terus ndhukung Vimscript (Lua ditawakake minangka alternatif) lan ndhukung sambungan kanggo umume plugin Vim standar. Fitur lanjutan Neovim bisa digunakake ing plugin sing dibangun nggunakake API khusus Neovim.
Saiki, kira-kira 130 plugin khusus wis disiapake, binding kasedhiya kanggo nggawe plugin lan ngleksanakake antarmuka nggunakake macem-macem basa pemrograman (C ++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) lan kerangka kerja (Qt, ncurses, Node .js, Electron, GTK). Sawetara opsi antarmuka pangguna lagi dikembangake. Tambahan GUI kaya plugin, nanging ora kaya plugin, dheweke miwiti telpon menyang fungsi Neovim, nalika plugin diarani saka Neovim.
Π Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ Neovim Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΊ Π½Π΅ΠΌΡ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ui_client. Π‘ΡΠ΅Π΄ΠΈ Π΄ΡΡΠ³ΠΈΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ: ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Python 2, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Lua-ΡΡΠ½ΠΊΡΠΈΠΉ Π² keymap, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² API, Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ·ΡΠΊΠ° Lua Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ, ΡΠ»ΡΡΡΠ΅Π½Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π² ΠΊΠΎΠ΄Π΅, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. Π Π°ΡΡΠΈΡΠ΅Π½Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ LSP-ΠΊΠ»ΠΈΠ΅Π½ΡΠ° (Language Server Protocol), ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π²ΡΠ½ΠΎΡΠ° Π»ΠΎΠ³ΠΈΠΊΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ Π°Π²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΡ.
Source: opennet.ru