vim, патоген и порядок загрузки файлов ftplugin
-
21-12-2019 - |
Вопрос
Я использую Vim и патоген некоторое время все работало нормально, но недавно у меня начали возникать проблемы с порядком загрузки в моей конфигурации ftplugin.
Конкретная проблема, с которой я сталкиваюсь прямо сейчас, заключается в том, что python-режим переопределяет мои настройки ftplugin.У меня есть ~/.vim/ftplugin/python.vim
который содержит следующую строку:
setlocal textwidth=119
python-mode поставляется со своим собственным файлом ftplugin, который также устанавливает textwidth
, в ~/.vim/bundle/python-mode/ftplugin/python/pymode.vim
.
Проблема в том, что Vim сейчас загружает файл ftplugin в python-режиме после мой файл ftplugin, так что в конечном итоге я получаю его textwidth=79
. Недавно мне пришлось переустановить MacPorts, и я думаю, что, должно быть, что-то изменилось в стандартной конфигурации.
Я пробовал различные трюки, включающие отключение определения типа файла / плагина перед вызовом pathogen, в различные Другое ответы, но ни один из них не помогает.
Благодаря использованию verbose set textwidth?
и некоторые echomsg
отлаживая, я знаю, что вызываются оба файла ftplugin, и что они вызываются в неправильном (для моих нужд) порядке.
Есть ли какой-нибудь способ заставить Vim / pathogen вызывать мои файлы ftplugin после файлов плагинов?
Я даже пытался поместить свои настройки в ~/.vim/after/plugin/pymode.vim
, но это загружается сразу после того, как pathogen устанавливает плагин, поэтому он все еще запускается до ftplugin
файлы, которые загружаются только после того, как я редактирую файл Python.
Решение
Оказывается, возможно, это никогда не работало так, как я думал.Я не знал, что Vim также поддерживает ~/.vim/after/ftplugin
, так что я смог переместить свои переопределения в ~/.vim/after/ftplugin/python.vim
и получите поведение, которого я ожидал.Мне не хочется отвечать на свои собственные вопросы по SO, но, надеюсь, это поможет кому-то другому.
Другие советы
Обычный Vim загружает скрипты плагина в алфавитный порядок.Это из :help load-plugins
... all directories in the 'runtimepath' option will be
searched for the "plugin" sub-directory and all files ending in ".vim"
will be sourced (in alphabetical order per directory), also in
subdirectories.
Таким образом, вы можете установить порядок загрузки плагинов, переименовав <filetype>_plugin.vim
Для <filetype>/35plugin.vim
.35 - это ваш желаемый порядок загрузки.Я думаю, что это должно работать и с Pathogen, переименовав каталоги плагинов внутри bundle
, но я еще не тестировал это.
Я все еще ищу более общий ответ на эту проблему с порядком загрузки
Насколько я знаю, на самом деле вы не можете сделать это с помощью Патогена.С NeoBundle это действительно просто.Патоген действительно минимален, он не обеспечивает вам большой гибкости - он делает только одно, и делает это хорошо.Если вы ищете возможность конфигурирования, я думаю, вы используете не тот инструмент.
Редактировать:Не совсем уверен насчет ftplugins, но пакеты в целом загружаются так, как вы их указываете (с помощью Vundle / NeoBundle).Поэтому я понимаю, что это, возможно, не самый релевантный из ответов.