Что нужно сделать, чтобы создать плагин vim?

11

Так что мой вопрос прост. Это хорошая идея - изучать сценарии vim только для того, чтобы создать vim, или мы должны принять некоторые другие более приемлемые языки для этого.

Например, по этой ссылке открывается видеоролик YouTube, на котором показано, как использовать Python для создания плагинов vim.

Скрипты Vim не совсем полезны, если не планируется создавать некоторые плагины Vim. Так есть ли какая-то конкретная вещь, которую нельзя сделать, если не используются только скрипты vim?

Маюх Саркар
источник
2
Обратите внимание, что многие люди используют vimscript для настройки (очень тщательно) своего Vim без создания или распространения каких-либо плагинов.
VanLaser

Ответы:

12

Мои плагины на 99% в VimL. Причина в том, что VimL доступен там, где установлен vim. С другими языками это намного сложнее - например, редко у меня установлен Python на окнах, где я использую Vim.

Конечно, VimL громоздок, ему не хватает многих интересных функций, но, по крайней мере, легче иметь что-то портативное.

1%, которого нет в VimL, ​​- это когда мне нужно взаимодействовать с внешним API, который предлагает привязки к Python.

Кстати, почти все, что вы узнаете о VimL, ​​можно использовать в интерактивном режиме, когда вы играете с такими командами, как :substitute. Большинство отображений или макросов также не нуждаются в Python.

Люк Эрмитт
источник
1
Я на самом деле не нахожу VimL таким громоздким. Конечно, я согласен с тем, что ему не хватает интересных функций и возможностей языков более высокого уровня, таких как python, но после работы с ним в течение некоторого времени я нахожу, что с VimL довольно приятно работать. Я думаю, что репутация VimL хуже, чем она должна быть.
Карл Ингве Лервог
Хорошо. Я должен признать, что многие успехи были сделаны с vim5.x (когда я начал использовать его). Но все еще есть угловые случаи, когда мы должны делать сложные вещи. Посмотрите, например, map()что ожидает строки или (несвязанные) :map. Мне часто приходится играть с / вокруг вычисления строк, чтобы прийти к моим выводам, например, при генерации отображений или обработке списка вызовов функций ...
Люк Эрмитт
Написание плагинов vim на другом языке не освобождает вас от изучения VimL, ​​так как привязки к python / ruby ​​/ etc. довольно ограничены, и вы неизбежно в конечном итоге execполучите фрагменты VimL. Он позволяет вам написать свою основную логику на языке, на котором вы могли бы работать намного эффективнее, но вам все равно нужно учить VimL.
Хоббс
12

Если вы намереваетесь писать плагины, вам обязательно следует прочитать прекрасную статью Стива Лоша «Написание плагинов Vim» ; не только для того, чтобы решить, будете ли вы придерживаться VimL или нет, но и для лучших советов.

Он также содержит небольшое обсуждение сценариев Vim с другими языками :

Во-первых, использование другого языка потребует от пользователей вашего плагина использования версии Vim, скомпилированной с поддержкой этой версии. В наше время это обычно не проблема, но если вы хотите, чтобы ваш плагин работал везде, то это не вариант.

Использование другого языка добавляет накладных расходов. Вы должны изучать не только Vimscript, но и интерфейс между Vim и языком. Для небольших плагинов это может усложнить проект, чем сохранить, но для больших плагинов это может окупиться. Вам решать, стоит ли это того.

Наконец, использование другого языка не полностью изолирует вас от эксцентричности Vimscript. Вам все еще нужно научиться делать большинство вещей в Vimscript - использование другого языка просто позволяет вам обернуть большую часть этого более аккуратно, чем вы могли бы в противном случае.

По моему опыту, даже когда плагин не-VimL лучше, я в итоге переключаюсь на чистую альтернативу VimL, ​​в основном из-за переносимости. Vim работает практически на любой системе (даже на уродливых и старых унаследованных системах), и не стоит тратить время на установку зависимостей или временное отключение этого плагина (особенно если вы все время забываете, что отключили его и пытаетесь использовать его сопоставления / команды) ,

Даже когда легче установить зависимости, вы можете столкнуться с некоторыми проблемами (например: некоторые плагины на основе Python не работают на 100%, если они получены из общих папок на виртуальных машинах). Вот почему несколько плагинов, которые я написал, используют только VimL.

mMontu
источник