Що нового в Vim 8

репозиторії Vim на Github з'явився перший чернетка документації для версії Vim 8.0. У ньому зазначено, що виправлено велику кількість помилок і додано кілька нових фіч.

Асинхронний ввід/вивід, канали
Vim тепер уміє обмінюватись повідомленнями з іншим процесом в фоні (наприклад, з сервером Python). Повідомлення приймаються і обробляються, коли Vim очікує вводу символу.

З каналами пов'язана широка підтримка JSON, його легко використовувати для комунікації між процесами, що дозволяє написати сервер на будь-якій мові. Використовуються функції
|json_encode()|
та
|json_decode()|
.

Завдання (jobs)
Vim може запустити завдання, обмінятися з ним даними і зупинити його. Це дуже корисно для запуску процесу завершення перевірки синтаксису та ін. Комунікація відбувається через канали. Завдання можуть читати і писати в буфер обміну або файл.

Таймери
Таймери теж асинхронні. Вони можуть спрацьовувати одного або періодично і запускати для будь-якої роботи.

let tempTimer = timer_start(4000, 'CheckTemp')
Через чотири секунди виклик: >
call CheckTemp()

Партиалы (partials)
В 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'
, щоб вставляти відступи без зміни величини відступу.

Підтримка Direct-X (під Windows)
Опція
'renderoptions'
дозволяє переключитися в режим Direct-X (DirectWrite) під Windows.

Підтримка GTK+ 3
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.

Джерело: Хабрахабр
  • avatar
  • 0

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.