Vim - как запустить команду сразу при запуске vim?

У меня есть плагин (FindFile.vim), который должен запускать :FindFileCache . всякий раз, когда я запускаю vim для сбора кэша файлов для быстрого открытия. Я должен запускать его каждый раз, когда я запускаю vim.

Как я могу написать команду, которая запускается один раз, каждый раз, когда запускается vim?

Ответ 1

Лучшее место для хранения ваших файлов конфигурации в вашем .vimrc файл. Однако, это слишком рано, проверьте :h startup:

At startup, Vim checks environment variables and files and sets values
accordingly.  Vim proceeds in this order:

1. Set the 'shell' and 'term' option                *SHELL* *COMSPEC* *TERM*
2. Process the arguments
3. Execute Ex commands, from environment variables and/or files *vimrc* *exrc*
4. Load the plugin scripts.                                 *load-plugins*
5. Set 'shellpipe' and 'shellredir'
6. Set 'updatecount' to zero, if "-n" command argument used
7. Set binary options
8. Perform GUI initializations
9. Read the viminfo file
10. Read the quickfix file
11. Open all windows
12. Execute startup commands

Как вы можете видеть, ваш .vimrc будет загружен перед плагинами. Если вы поместите :FindFileCache . в него, произойдет ошибка, так как эта команда не выйдет (пока она будет существовать после загрузки плагина на шаге 4).

Чтобы решить эту проблему, вместо того, чтобы напрямую выполнять команду, создайте авто-команда. Автоматические команды выполняют некоторую команду при возникновении события. В этом случае событие VimEnter выглядит соответствующим образом (от :h VimEnter):

                                                    *VimEnter*
VimEnter                    After doing all the startup stuff, including
                            loading .vimrc files, executing the "-c cmd"
                            arguments, creating all windows and loading
                            the buffers in them.

Затем просто поместите эту строку в свой .vimrc:

autocmd VimEnter * FindFileCache .

Ответ 2

Существует также флаг -c vim. Я делаю это в моей конфигурации tmuxp, чтобы vim начинал с вертикального разделения:

vim -c "vnew"

Ответ 3

Создайте файл с именем ~/.vim/after/plugin/whatever_name_you_like.vim и заполните его

FindFileCache .

Порядок чтения и выполнения скриптов в каталогах vim описан в :help 'runtimepath'

Ответ 4

Поместите FindFileCache в .vimrc.

Команды Autload различаются и не будут работать для вашего сценария.