- PVSM.RU - https://www.pvsm.ru -
В репозитории Vim на Github [1] появился первый черновик документации для версии Vim 8.0 [2]. В нём указано, что исправлено большое количество багов и добавлено несколько новых фич.
Vim теперь умеет обмениваться сообщениями с другим процессом в фоне (например, с сервером Python). Сообщения принимаются и обрабатываются, когда Vim ожидает ввода символа.
С каналами связана широкая поддержка JSON, его легко использовать для коммуникации между процессами, что позволяет написать сервер на любом языке. Используются функции |json_encode()|
и |json_decode()|
.
Vim может запустить задание, обменяться с ним данными и остановить его. Это очень полезно для запуска процесса завершения, проверки синтаксиса и проч. Коммуникация происходит через каналы. Задания могут читать и писать в буфер или файл.
Таймеры тоже асинхронные. Они могут срабатывать однажды или периодически и запускать функцию для любой работы.
let tempTimer = timer_start(4000, 'CheckTemp')
Через четыре секунды вызов: >
call CheckTemp()
В Vim уже есть Funcref, отсылка к функции. Партиал тоже относится к функции, и дополнительно связывает аргументы и/или словарь. Это особенно полезно для обратных вызовов на каналах и таймерах. Например, в вышеупомянутом таймере передаём аргумент функции.
let tempTimer = timer_start(4000, function('CheckTemp', ['out']))
Через четыре секунды вызов: >
call CheckTemp('out')
Плагинов становится всё больше. Чтобы лучше управлять коллекцией плагинов, добавлена поддержка пакетов. Это удобный способ получить один или несколько плагинов, поместить их в директорию и, возможно, обновлять до новых версий. Vim будет загружать их автоматически или только по требованию.
Это для разработчиков Vim. До сих пор писать тесты для Vim было непросто. В Vim 8 появились функции assert
и фреймворк для запуска тестов. Теперь гораздо проще писать тесты и обновлять их.
Добавлены следующие функции:
|assert_equal()|
|assert_notequal()|
|assert_exception()|
|assert_fails()|
|assert_false()|
|assert_match()|
|assert_notmatch()|
|assert_true()|
|alloc_fail()|
|disable_char_avail_for_testing()|
Раньше доступ к окну проходил только по его номеру. И каждый раз при открытии, закрытии или перемещении этот номер менялся. Теперь у каждого окна уникальный ID, так что окно легко найти.
Появилась опция 'breakindent'
, чтобы вставлять отступы без изменения величины отступа.
Опция 'renderoptions'
позволяет переключиться в режим Direct-X (DirectWrite) под Windows.
GTK+ 2 уже уходит в прошлое, пришло время GTK+ 3. Поддержка уже интегрирована, и она работает довольно хорошо, почти как GTK+ 2.
Добавлены следующие типы скриптов.
|Special| |v:false|, |v:true|, |v:none| and |v:null|
|Channel| подключение к другому процессу для асинхронного ввода/вывода
|Job| управление процессом
Добавлено много функций и команд для поддержки этих новых типов.
Из других улучшений упомянуто добавление шифрования blowfish2 вместо blowfish.
Есть одно «несовместимое» изменение в Vim 8.0 — это прекращение поддержки MS-DOS.
Автор: alizar
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/vim/117859
Ссылки в тексте:
[1] репозитории Vim на Github: https://github.com/vim/vim
[2] документации для версии Vim 8.0: https://github.com/vim/vim/blob/master/runtime/doc/version8.txt
[3] Источник: https://habrahabr.ru/post/281521/
Нажмите здесь для печати.