Как выполнить команду при запуске vim

11

Я только что установил плагин для Python, который отображает дерево методов. Поэтому я хотел бы открыть дерево при запуске, поэтому нет необходимости нажимать кнопки каждый раз, когда я открываю какой-либо .pyфайл. Но я хочу, чтобы эта команда выполнялась только для .pyфайлов. Вот как выглядит мой кусок vimrc:

nmap <F8> :TagbarToggle<CR>

Есть ли способ выполнить эту команду при запуске только для .pyфайлов?

St.Antario
источник
Привет, Святой Антарио. Вы можете заметить, что ваш принятый ответ имеет гораздо меньше голосов, чем альтернативный ответ.
цыплята

Ответы:

8

Добавьте в свой .vimrc:

au BufEnter *.py :TagbarToggle<CR>

где

  • auэто autocmdавтоматически выполнять команду.

  • BufEnter это когда вы вводите файл в первый раз.

  • *.py для файлового типа Python.

  • а остальное - команда, которая будет выполнена
Капил
источник
2
Это добавит дополнительную автокоманду каждый раз при получении .vimrc. Чтобы предотвратить это, строка должна быть заключена в группу augroup, которая удаляет команду. См :help augroup-delete.
Богатый
: augroup testgroup: autocmd! : au BufEnter * .py: TagbarToggle <CR> augroup END это нормально?
Капил
1
Выглядит хорошо для меня!
Богатый
11

На мой взгляд, самый простой способ сделать это - просто добавить команду в файл в вашем .vim/vimfilesкаталоге:

~/.vim/after/ftplugin/python.vim

или для Windows:

$HOME\vimfiles\after\ftplugin\python.vim

Этот метод описан в :help ftplugin-overrule(элемент списка 3), хотя контекст (изменение настроек) немного отличается.

Он предлагает следующие преимущества по сравнению с техникой автокоманд, описанной kapil .

  1. Меньше кода . Вы просто пишете Vimscript, который хотите выполнить. Вам не нужно кодировать автокоманду, окружать ее augroupи autocommand!очищать команды.

  2. Меньше накладных расходов . Vim уже определяет тип файла и проверяет его наличие after/ftplugin/filetype: зачем добавлять дополнительную автокоманду, которая выполняет ту же задачу?

  3. Уборщик.vimrc . Я думаю, что лучше иметь функциональность, специфичную для типа файла, отдельно от моей .vimrc. (Некоторые с этим не согласны: см. Недостатки ниже.)

У этого также есть несколько незначительных недостатков:

  1. Это работает, только если вы используете обнаружение типов файлов Vim. ( :help filetype)

    Тем не менее, это, как правило, одна из первых настроек, которую люди включают в свой .vimrc, и я бы поспорил, что почти у всех пользователей Vim она уже включена.

  2. Некоторые люди предпочитают хранить все свои конфигурации в своем .vimrcфайле.

Богатые
источник
1
+1 за ftplugin/<filetype>.vimлучшее разделение проблем :)
LEI