2

Мой .vimrc разделен на несколько файлов в каталоге vimrc.d, и в этих файлах находятся глобальные настройки, переменные и функции, основанные на определенных функциях, таких как Diff, Color, Folding и т.д. Эти файлы включены при runtime из моего .vimrc при запуске. Но в совокупности есть так много функций, которые редко используются в этих файлах, поэтому лучше всего конвертировать их в функции автозагрузки.

Итак, вот мои вопросы:

  1. Все красиво упаковано в функциональные модули (например, diff.vim), но если я хочу преобразовать функции в функции автозагрузки, значит ли это, что мне нужно разделить файл vimrc.d на файл, который исполняется моим vimrc и исполняется файл автозагрузки, который вызывается через механизм автозагрузки?
  2. Или я должен изменить rtp для включения моего vimrc.d и просто определить функции как функции автозагрузки внутри, например vimrc.d # diff # functioname? Могу ли я запустить эти файлы из моего vimrc и при этом воспользоваться преимуществами автозагрузки?

Спасибо!

1 ответ1

3
  1. Да. Хотя я не понимаю, почему вы используете каталог vimrc.d и:runtime в вашем vimrc вместо того, чтобы просто сбрасывать файлы в каталог плагинов и позволять Vim автоматически выполнять:runtime.
  2. Автозагрузочные плагины обычно разбиты на два файла: файл кода интерфейса, который входит в каталог плагинов, и файл кода выполнения, который входит в каталог автозагрузки. Файл кода интерфейса всегда загружается и должен быть скудным. Обычно он содержит команды и / или макросы, которые вызывают функции, определенные в файле кода выполнения. Файл кода выполнения не загружается до тех пор, пока не получен доступ к одному из определяемых им объектов (например, функция или переменная), и он еще не определен. Если вы запускаете файлы автозагрузки / кода выполнения из вашего vimrc, вы победили цель автозагрузки файлов.

Вам нужно поместить файлы с автозагрузкой в каталог автозагрузки, который является подкаталогом одного из компонентов вашего «runtimepath». Если вы не хотите использовать стандартный каталог ~/.vimrc/autoload (в Unix) или ~/vimfiles/autoload (в Windows), вам необходимо убедиться, что родительский каталог вашего каталога автозагрузки находится в 'runtimepath ».

Тогда не имеет значения, действительно ли вы:

  • Сделайте так, как вы сделали, и поместите файлы кода интерфейса в каталог vimrc.d и запустите их самостоятельно из вашего vimrc;
  • Добавьте каталог vimrc.d в ваш путь выполнения, переместите файлы кода интерфейса в новый подкаталог vimrc.d/plugin и дайте Vim запустить их для вас; или же
  • Просто поместите файлы кода интерфейса в стандартную директорию ~/.vim/plugin или ~/vimfiles/plugin и обойдитесь без vimrc.d и пути:runtime в вашем vimrc.

Если вы действительно хотите хранить свои вещи вне стандартных мест и в одном каталоге, я полагаю, вы могли бы сделать это (предполагая Unix для удобства).

  1. Создайте две новые директории, ~/.vim/vimrc.d/autoload и ~/.vim/vimrc.d/plugin.
  2. Разделите ваши существующие сценарии на части кода интерфейса и кода выполнения и поместите их в эти каталоги, не оставляя файлов сценариев в ~/.vim/vimrc.d.
  3. Удалите:runtime из вашего vimrc.
  4. В вашем vimrc добавьте ~/.vim/vimrc.d в ваш путь выполнения, например:

    set rtp^=~/.vim/vimrc.d

Для справки, автоматически загружаемые скрипты обсуждаются в

:help 41.15
:help autoload-functions

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .