После почти двух лет разработки состоялся релиз текстового редактора 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.