ДоступСн Neovim 0.5, ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Vim

ПослС ΠΏΠΎΡ‡Ρ‚ΠΈ Π΄Π²ΡƒΡ… Π»Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Ρ€Π΅Π»ΠΈΠ· Neovim 0.5, отвСтвлСния ΠΎΡ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Vim, сфокусированного Π½Π° ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΠΈ ΠΈ гибкости. Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΡƒΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ сСми Π»Π΅Ρ‚ проводится ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ Vim, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ вносятся измСнСния, ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΠ΅ сопровоТдСниС ΠΊΠΎΠ΄Π°, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ срСдства раздСлСния Ρ‚Ρ€ΡƒΠ΄Π° ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими мэйнтСйнСрами, ΠΎΡ‚Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ интСрфСйс ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠΉ части (интСрфСйс ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π΅ трогая внутрСнности) ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Π½ΠΎΠ²ΡƒΡŽ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ Π½Π° основС ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ². ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0, Π° базовая Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Vim.

Из ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Vim, ΠΏΠΎΠ±ΡƒΠ΄ΠΈΠ²ΡˆΠΈΡ… ΠΊ созданию Neovim, отмСчаСтся раздутая монолитная кодовая Π±Π°Π·Π°, состоящая Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΈΠ· 300 тысяч строк ΠΊΠΎΠ΄Π° Π½Π° языкС Π‘ΠΈ (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, Node.js, Electron, GTK). РазвиваСтся нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса. GUI-надстройки Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹, Π½ΠΎ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΠΎΠ½ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΡŽΡ‚ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Neovim, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈΠ· Neovim.

НСкоторыС ΠΈΠ· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π½ΠΎΠ²ΠΎΠΉ вСрсии:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ встроСнный LSP-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ (Language Server Protocol) Π½Π° языкС Lua, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ внСшним сСрвисам для Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ автодополнСния ΠΊΠΎΠ΄Π°.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ API для управлСния ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ΠΌ Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² выдСлСния.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ API для использования Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠΊ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ измСнСния Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±Π°ΠΉΡ‚ΠΎΠ².
  • Π Π°ΡΡˆΠΈΡ€Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Lua, ΠΊΠ°ΠΊ языка для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΈ управлСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π΄Π²ΠΈΠΆΠΊΠ° Ρ€Π°Π·Π±ΠΎΡ€Π° синтаксиса tree-sitter.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru