Есть ли простой способ увеличить autocmd `BufWrite` в Vim? - PullRequest
0 голосов
/ 25 сентября 2018

Я недавно установил плагин VimWiki и изучаю архитектуру плагинов Vim в целом (и лучше использовать каталоги типа after/ftplugin вместо того, чтобы втиснуть все в мой .vimrc файл).

Я хотел бы вызвать функцию перед записью файлов вики, например так:

autocmd BufWrite *.wiki call CleanMarkdown()

Однако vimwiki устанавливает собственную автокоманду BufWrite, которая обновляет любые таблицы содержания в файле вики.Я мог бы замочить эту автокоманду своей собственной функцией, которая вызывает и CleanMarkdown (), и все, что vimwiki делает сегодня, но это было бы хрупко перед лицом будущих изменений в плагине vimwiki.

Есть ли стандартный способ добавить в список действий, которые нужно выполнить для автокоманды BufWrite?

1 Ответ

0 голосов
/ 25 сентября 2018

Множество autocmds

Может быть много :autocmd с для любого события;команда накапливается.Соответствующий :autocmd! удаляет определенные наборы команд (в зависимости от заданных ему аргументов).

Если вы не укажете [group], autocmd будет определен в глобальном пространстве, и естьвысокий риск получить это очищено некоторыми :autocmd!.Поэтому рекомендуется указывать [group] (особенно в плагинах).Благодаря этому вы избегаете того, чтобы другой (некорректно работающий) плагин или пользовательские настройки засоряли ваш autocmd.

Интеграция с плагином vimwiki

Поскольку плагин уже определяет свой собственный filetype ,вам не нужно дублировать логику обнаружения типов файлов , то есть шаблон *.wiki.Вместо этого, если вы поместите определение :autocmd в ~/.vim/after/ftplugin/vimwiki.vim, вы можете использовать специальный шаблон <buffer>, чтобы этот autocmd применялся только к текущему (VimWiki) буферу.

augroup MyVimWikiCleanup
autocmd BufWrite <buffer> call CleanMarkdown()
augroup END

Порядок

:autocmd выполняются в том порядке, в котором они были определены.Используя после каталога , ваш будет выполнен после плагина.

...