Выпуск текстового редактора 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.

Среди изменений в новой версии:

  • По умолчанию предложена новая цветовая схема, в которой уменьшена яркость, задействованы более сбалансированные сочетания цветов и решены проблемы, возникающие у людей с отклонениями цветовосприятия.

    CFD0C5CECEC5D4_1715929591.pngCFD0C5CECEC5D4_1715929570.png

  • Изменены привязки клавиш: «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)». CFD0C5CECEC5D4_1715930617.png

  • Обеспечено автоматическое определение поддержки терминалом 24-разрядного представления цветов («truecolor»).

  • При использовании LSP (Language Server Protocol) обеспечен вывод подсказок по месту, в виде виртуального текста, показываемого другим цветом прямо в коде, но без фактического добавления в исходные тексты (на скриншоте подсказки отображаются тёмно серым цветом).

    CFD0C5CECEC5D4_1715930946.png

  • Расширены возможности для инспектирования синтаксического дерева исходного кода. Добавлен интерактивный режим написания запросов к синтаксическому дереву, на лету применяемых к текущему коду. CFD0C5CECEC5D4_1715931187.png

  • Добавлена возможность указания модификаторов в команде »: terminal», например,»: botright terminal» для открытия нового окна терминала в нижней правой части экрана.



Источник: http://www.opennet.ru/opennews/art.shtml? num=61195

OpenNet прочитано 6775 раз