Сделайте vim закрыть синтаксическую конструкцию для блока кода автоматически - PullRequest
2 голосов
/ 10 января 2012

Есть ли плагин, который делает vim близким синтаксические конструкции, которые автоматически оборачивают кодовые блоки для любого языка на основе данных в файлах отступов и синтаксиса?

Например, я редактирую файл lua, когда пишу

function myfunction()

и нажмите ввод, он автоматически делает закрывающий «конец»

function myfunction()
    <cursor position>
end

Или, может быть, кто-нибудь может показать пример, как написать свой собственный плагин для конкретного языка с длинными ключевыми словами для блоков кода(как Луа, Эрланг или Паскаль)?

Ответы [ 2 ]

3 голосов
/ 10 января 2012

Я бы использовал плагин для сниппета, например UltiSnips (мой любимый) или Snipmate .Они по существу расширяют небольшое слово или фрагмент текста на большие фрагменты кода и позволяют редактировать только те части, которые являются уникальными для каждой структуры.И UltiSnips, и Snippmate включают фрагменты для многих языков и позволяют вам создавать свои собственные фрагменты.

Например, UltiSnips включает фрагмент функции для Lua.Я просто должен набрать fun, а затем нажать клавишу Tab, и она расширится до

function new_function(args)

end

, и будет выбран new_fuctnion, чтобы я мог редактировать имя функции.Затем, когда я нажимаю Ctrl - j (в моем vimrc я перепривязываю это к Tab ), он выбирает следующую часть фрагмента, которая в этом * argsслучай, позволяющий мне ввести аргументы функции.Окончательный Ctrl - j помещает курсор в тело функции.

3 голосов
/ 10 января 2012

Endwise , кажется, то, что вы ищете. У него уже есть поддержка lua, и, похоже, его будет довольно легко расширить, если вы не против VimL.

...