Выпуск тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Neovim 0.10

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

Из ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Vim, ΠΏΠΎΠ±ΡƒΠ΄ΠΈΠ²ΡˆΠΈΡ… ΠΊ созданию Neovim, отмСчаСтся раздутая монолитная кодовая Π±Π°Π·Π°, состоящая Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΈΠ· 300 тысяч строк ΠΊΠΎΠ΄Π° Π½Π° языкС Π‘ΠΈ (C89). Π’ΠΎ всСх Π½ΡŽΠ°Π½ΡΠ°Ρ… ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ Vim разбираСтся всСго нСсколько Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, Π° всС измСнСния ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ΄ΠΈΠ½ мэйнтСйнСр, Ρ‡Ρ‚ΠΎ затрудняСт сопровоТдСниС ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π°Π΄ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°. ВмСсто встроСнного Π² ядро Vim ΠΊΠΎΠ΄Π° для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ GUI Π² Neovim прСдлагаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΡƒΡŽ прослойку, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΡƒΡŽ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ интСрфСйсы с использованиСм Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΡƒΠ»ΠΊΠΈΡ‚ΠΎΠ².

ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹ ΠΊ Neovim Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ процСссы, для взаимодСйствия с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ MessagePack. ВзаимодСйствиС с ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ производится Π² асинхронном Ρ€Π΅ΠΆΠΈΠΌΠ΅, Π±Π΅Π· блокирования Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°. Для обращСния ΠΊ ΠΏΠ»Π°Π³ΠΈΠ½Ρƒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ TCP-сокСт, Ρ‚.Π΅. ΠΏΠ»Π°Π³ΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ Π½Π° внСшнСй систСмС. ΠŸΡ€ΠΈ этом Neovim остаётся ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ совмСстимым с Vim, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Vimscript (Π² качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ прСдлагаСтся Lua) ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΡˆΡ‚Π°Ρ‚Π½Ρ‹Ρ… ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Vim. Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ возмоТности Neovim ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π² ΠΏΠ»Π°Π³ΠΈΠ½Π°Ρ…, построСнных с использованиСм API, спСцифичного для Neovim.

Π—Π° врСмя сущСствования ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ тысячи спСцифичных ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², доступны Π±ΠΈΠ½Π΄ΠΈΠ½Π³ΠΈ для создания ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ интСрфСйсов с использованиСм Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языков программирования (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² (Qt, ncurses, Node.js, Electron, GTK). РазвиваСтся нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса. GUI-надстройки Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹, Π½ΠΎ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΠΎΠ½ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΡŽΡ‚ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Neovim, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈΠ· Neovim.

Π‘Ρ€Π΅Π΄ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π½ΠΎΠ²ΠΎΠΉ вСрсии:

  • По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° новая цвСтовая схСма, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½Π° ΡΡ€ΠΊΠΎΡΡ‚ΡŒ, задСйствованы Π±ΠΎΠ»Π΅Π΅ сбалансированныС сочСтания Ρ†Π²Π΅Ρ‚ΠΎΠ² ΠΈ Ρ€Π΅ΡˆΠ΅Π½Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ Ρƒ людСй с отклонСниями цвСтовосприятия.
    Выпуск тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Neovim 0.10Выпуск тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Neovim 0.10
  • Π˜Π·ΠΌΠ΅Π½Π΅Π½Ρ‹ привязки клавиш: «K» — ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ LSP-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ курсор, «[d» ΠΈ «]d» — ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΠΎ диагностичСским сообщСниям, <C-W>d — Π²Ρ‹Π²ΠΎΠ΄ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ диагностичСском сообщСнии.
  • ВстроСна Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½Π° vim-commentary для быстрого обрамлСния символами коммСнтария строк ΠΈ Π±Π»ΠΎΠΊΠΎΠ² с ΠΊΠΎΠ΄ΠΎΠΌ, учитывая контСкст (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для содСрТимого Ρ‚Π΅Π³Π° <script> Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ символы «//», Π° для HTML — «<!—» «—>»
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция ‘termsync’, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π°Ρ Ρ€Π΅ΠΆΠΈΠΌ синхронизированного Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ для устранСния мСрцания ΠΈ Ρ€Π°Π·Ρ€Ρ‹Π²ΠΎΠ² Π½Π° экранС осущСствляСтся Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ интСрфСйса ΠΈ ΠΈΡ… ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ€Ρ†ΠΈΠ΅ΠΉ.
  • Для записи Π² систСмный Π±ΡƒΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅Π½Π° задСйствована escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ «OSC 52», Ссли Ρ€Π°Π±ΠΎΡ‚Π° осущСствляСтся Π² сСансС SSH, Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° настройка ‘clipboard’ ΠΈ имССтся эмулятор Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ «OSC 52».
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° оформлСния гипСрссылок ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ OSC 8. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ данная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ примСняСтся для выдСлСния ссылок Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… Markdown, ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½Ρ‹Ρ… Π² Π²ΠΈΠ΄Π΅ «[example](https://example.com)».
    Выпуск тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Neovim 0.10
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΎ автоматичСскоС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠΌ 24-разрядного прСдставлСния Ρ†Π²Π΅Ρ‚ΠΎΠ² («truecolor»).
  • ΠŸΡ€ΠΈ использовании LSP (Language Server Protocol) обСспСчСн Π²Ρ‹Π²ΠΎΠ΄ подсказок ΠΏΠΎ мСсту, Π² Π²ΠΈΠ΄Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ тСкста, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ прямо Π² ΠΊΠΎΠ΄Π΅, Π½ΠΎ Π±Π΅Π· фактичСского добавлСния Π² исходныС тСксты (Π½Π° ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅ подсказки ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Ρ‚Ρ‘ΠΌΠ½ΠΎ сСрым Ρ†Π²Π΅Ρ‚ΠΎΠΌ).
    Выпуск тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Neovim 0.10
  • Π Π°ΡΡˆΠΈΡ€Π΅Π½Ρ‹ возмоТности для инспСктирования синтаксичСского Π΄Π΅Ρ€Π΅Π²Π° исходного ΠΊΠΎΠ΄Π°. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ написания запросов ΠΊ синтаксичСскому Π΄Π΅Ρ€Π΅Π²Ρƒ, Π½Π° Π»Π΅Ρ‚Ρƒ примСняСмых ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ ΠΊΠΎΠ΄Ρƒ.
    Выпуск тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Neovim 0.10
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ указания ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ «:terminal», Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, «:botright terminal» для открытия Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° Π² Π½ΠΈΠΆΠ½Π΅ΠΉ ΠΏΡ€Π°Π²ΠΎΠΉ части экрана.

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