Реализована поддержка всплывающих окон, которые, наряду со свойствами текста, в ходе опроса на конференции VimConf 2018 были отмечены разработчиками плагинов как наиболее востребованные возможности, которых не хватает в Vim. Всплывающие окна позволяют отображать сообщения, отрывки кода и любую другую информацию поверх редактируемого текста. Данные окна могут быть подсвечены разными способами, быстро открыты и закрыты. Реализация указанной функциональности потребовала существенно доработки ранее используемых механизмов вывода на экран, а также расширения API для обеспечения работы со всплывающими окнами из плагинов.
Добавлена возможность определения свойств текста, при помощи которых можно выделять цветом куски текста или подсвечивать произвольные области. Свойства текста можно использовать в форме работающего в асинхронном режиме механизма выделения текста, альтернативного ранее доступным возможностям подсветки синтаксиса на базе шаблонов. Особенностью свойств текста также является, то что они прикреплены со связанным с ними текстом и сохраняются даже при вставке новых слов перед выделенным текстом.
Для наглядной демонстрации новых возможностей Vim 8.2 подготовлен плагин с игрой, позволяющей стрелять в бегущих по экрану овец. Бегущие овцы отображаются при помощи всплывающих окон, а расцветка реализована через свойства текста.
Для демонстрации свойств текста дополнительно опубликован плагин govim, используемый для подсветки синтаксиса в программах на языке Go, получая информацию о семантике языка с внешнего LSP-сервера (Language Server Protocol). Всплывающие окна в govim используются для вывода контекстных подсказок для автодополнения имён и отображния описаний функций.
Предложена новая команда ":const" для определения переменных, которые невозможно изменить:
const TIMER_DELAY = 400
Добавлена возможность определения словарей с буквенными ключами без использования кавычек:
let options = #{width: 30, height: 24}
Добавлена возможность блочных присвоений, упрощающих присвоение переменным многострочных кусков текста:
let lines =<< trim END
line one
line two
END
Добавлена возможность построения цепочек функций при вызове методов:
mylist->filter(filterexpr)->map(mapexpr)->sort()->join()
В основной состав включена библиотека xdiff, позволившая значительно улучшить представление различий разных вариантов текста;
Добавлена настройка "modifyOtherKeys" для задания расширенных комбинаций клавиш
Добавлена поддержка консоли ConPTY, позволяющая добиться отображения всех цветов в консоли Windows 10;
Модернизирован установщик для Windows.
Дополнительно можно отметить, подготовку экспериментальной ветки редактора Neovim 0.5. Neovim представляет собой ответвления от Vim, сфокусированное на повышении расширяемости и гибкости. В рамках проекта уже более пяти лет проводится агрессивная переработка кодовой базы Vim, в результате которой вносятся изменения, упрощающие сопровождение кода, предоставляющие средства разделения труда между несколькими мэйнтейнерами, отделяющие интерфейс от базовой части (интерфейс можно менять не трогая внутренности) и реализующие новую расширяемую архитектуру на основе плагинов. Плагины к Neovim запускаются как отдельные процессы, для взаимодействия с которыми используется формат MessagePack.