ΠΠΎ ΡΠ΅ΡΠΈΡΠΈ Π΄Π²Π΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΡΠ°Π·Π²ΠΎΡ, Neovim 0.5 Π΅ ΠΎΠ±ΡΠ°Π²Π΅Π½, Π²ΠΈΠ»ΡΡΠΊΠ° Π½Π° ΡΡΠ΅Π΄Π½ΠΈΠΊΠΎΡ Vim ΡΠΎΠΊΡΡΠΈΡΠ°Π½ Π½Π° Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°ΡΠ΅ Π½Π° Π΅ΠΊΡΡΠ΅Π½Π·ΠΈΠ±ΠΈΠ»Π½ΠΎΡΡΠ° ΠΈ ΡΠ»Π΅ΠΊΡΠΈΠ±ΠΈΠ»Π½ΠΎΡΡΠ°. ΠΡΠΎΠ΅ΠΊΡΠΎΡ ΡΠ° ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΡΠ²Π°ΡΠ΅ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΊΠΎΠ΄ Π½Π° Vim ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠ΄ ΡΠ΅Π΄ΡΠΌ Π³ΠΎΠ΄ΠΈΠ½ΠΈ, ΠΊΠ°ΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΡΠΎ ΡΠ΅ ΠΏΡΠ°Π²Π°Ρ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΊΠΎΠΈ Π³ΠΎ ΠΏΠΎΠ΅Π΄Π½ΠΎΡΡΠ°Π²ΡΠ²Π°Π°Ρ ΠΎΠ΄ΡΠΆΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄ΠΎΡ, ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°Π°Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° ΠΏΠΎΠ΄Π΅Π»Π±Π° Π½Π° ΡΡΡΠ΄ΠΎΡ ΠΏΠΎΠΌΠ΅ΡΡ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΎΠ΄ΡΠΆΡΠ²Π°ΡΠΈ, ΠΎΠ΄Π²ΠΎΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΎΡ ΠΎΠ΄ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΠΎΡ Π΄Π΅Π» (ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅ΡΠΈ Π±Π΅Π· Π΄ΠΎΠΏΠΈΡΠ°ΡΠ΅ Π½Π° Π²Π½Π°ΡΡΠ΅ΡΠ½ΠΈΡΠ΅ Π΄Π΅Π»ΠΎΠ²ΠΈ) ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΡΡΠ΅ Π½ΠΎΠ²Π° Π΅ΠΊΡΡΠ΅Π½Π·ΠΈΠ²Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΏΡΠΈΠΊΠ»ΡΡΠΎΡΠΈ. ΠΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΠΎΡ ΡΠ°Π·Π²ΠΎΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½ΡΠ°ΡΠ° Apache 2.0, Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΠΎΡ Π΄Π΅Π» Π΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½ΡΠ°ΡΠ° Vim.
ΠΠ΄Π΅Π½ ΠΎΠ΄ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ ΡΠΎ Vim ΡΡΠΎ Π³ΠΎ ΠΏΠΎΡΡΠΈΠΊΠ½Π° ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ΡΠΎ Π½Π° Neovim Π±Π΅ΡΠ΅ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° Π½Π°Π΄ΡΠ΅Π½Π°, ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½Π° Π±Π°Π·Π° Π½Π° ΠΊΠΎΠ΄, ΠΊΠΎΡΠ° ΡΠ΅ ΡΠΎΡΡΠΎΠΈ ΠΎΠ΄ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠ΄ 300 ΠΈΠ»ΡΠ°Π΄ΠΈ Π»ΠΈΠ½ΠΈΠΈ C (C89) ΠΊΠΎΠ΄. Π‘Π°ΠΌΠΎ Π½Π΅ΠΊΠΎΠ»ΠΊΡ Π»ΡΡΠ΅ Π³ΠΈ ΡΠ°Π·Π±ΠΈΡΠ°Π°Ρ ΡΠΈΡΠ΅ Π½ΠΈΡΠ°Π½ΡΠΈ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΈ Vim, Π° ΡΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Π½ΠΈ ΠΎΠ΄ Π΅Π΄Π΅Π½ ΠΎΠ΄ΡΠΆΡΠ²Π°Ρ, ΡΡΠΎ Π³ΠΎ ΠΎΡΠ΅ΠΆΠ½ΡΠ²Π° ΠΎΠ΄ΡΠΆΡΠ²Π°ΡΠ΅ΡΠΎ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΡΡΠ΅Π΄Π½ΠΈΠΊΠΎΡ. ΠΠ°ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ΄ΠΎΡ Π²Π³ΡΠ°Π΄Π΅Π½ Π²ΠΎ ΡΠ°Π΄ΡΠΎΡΠΎ Π½Π° Vim Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π½Π° GUI, Neovim ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΡΠ½ΠΈΠ²Π΅ΡΠ·Π°Π»Π΅Π½ ΡΠ»ΠΎΡ ΠΊΠΎΡ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π°Π»Π°ΡΠΊΠΈ.
ΠΡΠΈΠΊΠ»ΡΡΠΎΡΠΈΡΠ΅ Π·Π° Neovim ΡΠ΅ ΡΡΠ°ΡΡΡΠ²Π°Π°Ρ ΠΊΠ°ΠΊΠΎ ΠΏΠΎΡΠ΅Π±Π½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ, Π·Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΠ° ΡΠΎ ΠΊΠΎΡΠ° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΡΠΎΡΠΌΠ°ΡΠΎΡ MessagePack. ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΠ°ΡΠ° ΡΠΎ ΠΏΡΠΈΠΊΠ»ΡΡΠΎΡΠΈΡΠ΅ ΡΠ΅ Π²ΡΡΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΎ, Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° ΡΡΠ΅Π΄Π½ΠΈΠΊΠΎΡ. ΠΠ° ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ Π΄ΠΎΠ΄Π°ΡΠΎΠΊΠΎΡ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ TCP ΠΏΡΠΈΠΊΠ»ΡΡΠΎΠΊ, Ρ.Π΅. ΠΏΡΠΈΠΊΠ»ΡΡΠΎΠΊΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Π½Π° Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ΅Π½ ΡΠΈΡΡΠ΅ΠΌ. ΠΠΎ ΠΈΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅, Neovim ΠΎΡΡΠ°Π½ΡΠ²Π° Π½Π°Π½Π°Π·Π°Π΄ ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π΅Π½ ΡΠΎ Vim, ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΡΠ²Π° Π΄Π° Π³ΠΎ ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° Vimscript (Lua ΡΠ΅ Π½ΡΠ΄ΠΈ ΠΊΠ°ΠΊΠΎ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π°) ΠΈ ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° Π²ΡΡΠΊΠΈ Π·Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈ Vim ΠΏΡΠΈΠΊΠ»ΡΡΠΎΡΠΈ. ΠΠ°ΠΏΡΠ΅Π΄Π½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° Neovim ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π²ΠΎ ΠΏΡΠΈΠΊΠ»ΡΡΠΎΡΠΈ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° API ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Π·Π° Neovim.
ΠΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ², Π²Π΅ΡΠ΅ ΡΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ ΠΎΠΊΠΎΠ»Ρ 130 ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ ΠΏΡΠΈΠΊΠ»ΡΡΠΎΡΠΈ, Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈ ΡΠ΅ Π²ΡΡΠΊΠΈ Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΏΡΠΈΠΊΠ»ΡΡΠΎΡΠΈ ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΈ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈ ΡΠ°Π·ΠΈΡΠΈ (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) ΠΈ ΡΠ°ΠΌΠΊΠΈ (Qt, ncurses, ΠΠ°Π·ΠΎΠ» .js, ΠΠ»Π΅ΠΊΡΡΠΎΠ½, GTK). Π‘Π΅ ΡΠ°Π·Π²ΠΈΠ²Π°Π°Ρ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΎΠΏΡΠΈΠΈ Π·Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ. ΠΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ Π·Π° GUI ΡΠ΅ ΠΌΠ½ΠΎΠ³Ρ ΡΠ»ΠΈΡΠ½ΠΈ Π½Π° ΠΏΡΠΈΠΊΠ»ΡΡΠΎΡΠΈΡΠ΅, Π½ΠΎ Π·Π° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΠ΄ ΠΏΡΠΈΠΊΠ»ΡΡΠΎΡΠΈΡΠ΅, ΡΠΈΠ΅ ΠΈΠ½ΠΈΡΠΈΡΠ°Π°Ρ ΠΏΠΎΠ²ΠΈΡΠΈ Π΄ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π½Π° Neovim, Π΄ΠΎΠ΄Π΅ΠΊΠ° ΠΏΡΠΈΠΊΠ»ΡΡΠΎΡΠΈΡΠ΅ ΡΠ΅ ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π°Π°Ρ ΠΎΠ΄ Π²Π½Π°ΡΡΠ΅ΡΠ½ΠΎΡΡΠ° Π½Π° Neovim.
ΠΠ΅ΠΊΠΎΠΈ ΠΎΠ΄ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π²ΠΎ Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ°:
- ΠΠΎΠ΄Π°Π΄Π΅Π½ Π΅ Π²Π³ΡΠ°Π΄Π΅Π½ LSP ΠΊΠ»ΠΈΠ΅Π½Ρ (ΡΠ°Π·ΠΈΡΠ΅Π½ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ») Π²ΠΎ Lua, ΠΊΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ ΡΠΎ Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½ΠΈ ΡΡΠ»ΡΠ³ΠΈ Π·Π° Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΠΏΠΎΠΏΠΎΠ»Π½ΡΠ²Π°ΡΠ΅ ΠΊΠΎΠ΄.
- ΠΠΎΠ΄Π°Π΄Π΅Π½ΠΎ Π΅ API Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π° Π½Π° Π΄ΠΈΠ·Π°ΡΠ½ΠΎΡ Π½Π° Π±Π°ΡΠ΅ΡΠΈΡΠ΅ Π·Π° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π±Π°.
- ΠΠΎΠ΄Π°Π΄Π΅Π½ΠΎ Π΅ API Π·Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΏΡΠΎΡΠΈΡΠ΅Π½ΠΈ ΠΎΠ·Π½Π°ΠΊΠΈ Π·Π° ΡΠ»Π΅Π΄Π΅ΡΠ΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° Π±Π°ΡΡ.
- ΠΡΠΎΡΠΈΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Lua ΠΊΠ°ΠΊΠΎ ΡΠ°Π·ΠΈΠΊ Π·Π° ΡΠ°Π·Π²ΠΎΡ Π½Π° ΠΏΡΠΈΠΊΠ»ΡΡΠΎΡΠΈ ΠΈ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
- ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΠΌΠΎΡΠΎΡΠΎΡ Π·Π° ΠΏΠ°ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° Π΄ΡΠ²Π°.
ΠΠ·Π²ΠΎΡ: opennet.ru