Що слід виконати, щоб створити плагін vim?


12

Тож моє запитання просте. Це гарна ідея навчитися сценаріям vim просто для створення vim чи ми повинні прийняти до цього ще кілька прийнятих мов.

Наприклад, це посилання відкриває відео на YouTube, де показано, як використовувати Python для створення плагінів vim.

Сценарії Vim не зовсім корисні, якщо ви не маєте наміру створити кілька плагінів vim. То чи є якась конкретна річ, яку неможливо зробити, якщо тільки не використовуються сценарії vim?


2
Зауважте, що багато людей використовують vimscript для налаштування (дуже ретельно) свого Vim, не створюючи і не поширюючи ніяких плагінів.
VanLaser

Відповіді:


12

Мої плагіни 99% у VimL. Причина полягає в тому, що VimL доступний там, де встановлено vim. З іншими мовами це набагато складніше - наприклад, рідко в мене встановлений Python на вікнах Windows, де я використовую Vim.

Звичайно, VimL громіздкий, йому не вистачає багатьох цікавих функцій, але, принаймні, легше мати щось портативне.

1% не в VimL - це коли мені потрібно взаємодіяти із зовнішнім API, який пропонує прив'язки пітона.

До речі, майже все, що ви дізнаєтесь про VimL, ​​можна використовувати інтерактивно, коли ви граєте з такими командами :substitute. Більшість відображень або макросів також не потребують python.


1
Я фактично не вважаю VimL таким громіздким. Звичайно, я погоджуюсь, що йому не вистачає цікавих функцій та функціональності мов вищого рівня, таких як python, але, працюючи з ним деякий час, я вважаю VimL досить приємною для роботи. Я думаю, що репутація VimL гірша, ніж повинна бути.
Карл Інгве Лервег

Добре. Треба визнати, що з vim5.x (коли я почав його використовувати) було досягнуто багато успіхів. Але все ж є кутові випадки, коли нам доводиться робити складні речі. Дивіться, наприклад, map()що очікує рядки або (не пов'язані між собою) :map. Мені часто доводиться грати з / навколо рядкової оцінки, щоб досягти моїх цілей, наприклад, генерування відображень чи обробки списку функціональних викликів, ...
Люк Ермітт

Написання плагінів vim іншою мовою не звільняє вас від навчання VimL так чи інакше, оскільки прив'язка до python / ruby ​​/ тощо. є досить обмеженими, і ви неминуче execвсе-таки опиняєтеся фрагментами VimL. Це дозволяє вам писати свою основну логіку мовою, на якій, можливо, ви зможете працювати набагато ефективніше, але вам все ще потрібно вивчити VimL.
варення

12

Якщо ви збираєтесь писати плагіни, ви, безумовно, повинні прочитати чудову статтю "Написання плагінів Vim", автор Стіва Лоша ; не тільки для того, щоб вирішити, чи будете ви дотримуватися VimL чи ні, але й поради щодо кращих практик.

Він також містить невелику дискусію про сценарій Vim іншими мовами :

По-перше, використання іншої мови вимагає від користувачів вашого плагіна використовувати версію Vim, складену з підтримкою цієї версії. У цей день і вік зазвичай це не проблема, але якщо ви хочете, щоб ваш плагін працював скрізь, це не варіант.

Використання іншої мови додає накладні витрати. Вам потрібно не тільки вивчити Vimscript, але і інтерфейс між Vim та мовою. Для невеликих плагінів це може додати більшу складність проекту, ніж економить, але для великих плагінів він може окупити себе. Ви самі вирішуєте, чи варто того.

Нарешті, використання іншої мови не зовсім захищає вас від ексцентриситетів Vimscript. Вам все-таки потрібно навчитися робити більшість справ у Vimscript - використання іншої мови просто дозволяє обробляти більшу частину цього більш акуратно, ніж ви могли б інакше.

Мій досвід полягає в тому, що навіть коли плагін без VimL кращий, я згодом переходжу на чисту альтернативу VimL, ​​головним чином через портативність. Vim працює практично в будь-якій системі (навіть потворних і старих застарілих системах), і накладні витрати на встановлення залежностей або тимчасове вимкнення цього плагіна не варто (особливо якщо ви забудете, що ви його відключили і намагаєтеся використовувати його відображення / команди) .

Навіть коли простіше встановити залежності, ви можете зіткнутися з деякими проблемами (наприклад: деякі плагіни на основі python не працюють на 100%, коли вони отримуються з загальних папок на віртуальних машинах). Ось чому кілька написаних мною плагінів використовують лише VimL.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.