После почти двух лет разработки состоялся релиз текстового редактора Vim 8.1, который отнесён к категории незначительных выпусков, в котором устранены накопившиеся ошибки и предложены единичные новшества.
Код Vim распространяется под собственной копилефт лицензией, совместимой с GPL, и позволяющей без ограничений использовать, распространять и перерабатывать код. Основная особенность лицензии Vim связана с возвратом изменений - реализованные в сторонних продуктах улучшения должны быть переданы в исходный проект, если мэйнтейнер Vim посчитает эти улучшения заслуживающими внимания и отправит соответствующий запрос. По типу распространения, Vim относится к Сharityware, т.е. вместо продажи программы или сбора пожертвований на нужды проекта, авторы Vim просят перечислить любую сумму на благотворительность, если программа понравится пользователю.
Ключевым улучшением выпуске 8.1 является поддержка открытия терминала внутри окна Vim. Терминал стал первой видимой пользователю встроенной функциональностью, реализованной с использованием добавленных в ветке Vim 8.0 средств для организации запуска обработчиков в фоне и взаимодействия с ними через механизм асинхронных каналов, без блокировки работы основного процесса Vim. Создание окна с терминалом осуществляется командой ":term", для переключения в окно терминала и обратно предоставляется клавиатурная комбинация "CTRL-W w".
В качестве областей применения встроенного терминала упоминается:
Быстрый запуск серии команд в shell по ходу редактирования;
Выполнение сборочных команд, подобных make, продолжая редактирование кода в других окнах vim и контролируя ход сборки;
Запуск в терминале отладочного плагина для отладки непосредственно в Vim с возможностью ввода команд в gdb;
Проведение различных тестов, в том числе тестов интерактивных действий, таких как работа всплывающих меню;
Доступ к консоли при редактировании файлов на удалённом хосте, вход на который осуществлён по SSH (можно быстро запустить терминал, без применения screen/tmux и без установки нового ssh-соединения).
Среди других изменений:
В коде vim разрешено применение некоторых возможностей спецификации C99, таких как комментарии через "//" и оставление запятой после последнего элемента множества;
Добавлены новые команды: ":pythonx", ":pyxdo", ":pyxfile", ":terminal", ":tmapclear", ":tmap", ":tnoremap", ":tunmap";
Добавлены новые функции: term_*, assert_beeps, assert_equalfile,
assert_report, balloon_show, balloon_split, ch_canread, getchangelist, getjumplist, getwinpos, pyxeval, remote_startserver, setbufline, test_ignore_error, test_override, trim и win_screenpos;
Добавлены новые обработчики событий: CmdlineChanged, CmdlineEnter, CmdlineLeave, ColorSchemePre, DirChanged, ExitPre, TerminalOpen, TextChangedP, TextYankPost;
Добавлены новые опции: 'balloonevalterm',
'imstyle',
'mzschemedll',
'mzschemegcdll',
'makeencoding',
'pumwidth',
'pythonhome',
'pythonthreehome',
'pyxversion',
'termwinkey',
'termwinscroll',
'termwinsize',
'viminfofile',
'winptydll'.
Дополнительно можно отметить, подготовку экспериментальной ветки редактора Neovim 0.3. Neovim представляет собой ответвления от Vim, сфокусированное на повышении расширяемости и гибкости. В рамках проекта уже более четырёх лет проводится агрессивная переработка кодовой базы Vim, в результате которой вносятся изменения, упрощающие сопровождение кода, предоставляющие средства разделения труда между несколькими мэйнтейнерами, отделяющие интерфейс от базовой части (интерфейс можно менять не трогая внутренности) и реализующие новую расширяемую архитектуру на основе плагинов. Плагины к Neovim запускаются как отдельные процессы, для взаимодействия с которыми используется формат MessagePack.
Релиз текстового редактора Vim 8.1
Также по теме: