Como executar um comando na inicialização do vim

11

Acabei de instalar um plugin para python que exibe a árvore de métodos. Então, eu gostaria de abrir a árvore na inicialização, portanto não é necessário pressionar os botões toda vez que abro algum .pyarquivo. Mas, eu quero que este comando seja executado apenas para .pyarquivos. Aqui está como minha peça do vimrc se parece:

nmap <F8> :TagbarToggle<CR>

Existe uma maneira de executar este comando na inicialização apenas para .pyarquivos?

St.Antario
fonte
Olá, St. Antario. Você pode observar que sua resposta aceita tem muito menos votos positivos do que a resposta alternativa.
pintos

Respostas:

8

Adicione no seu .vimrc:

au BufEnter *.py :TagbarToggle<CR>

Onde

  • auautocmdOu seja , execute o comando automaticamente.

  • BufEnter é quando você insere o arquivo pela primeira vez.

  • *.py é para python do tipo de arquivo.

  • e o resto é o comando a ser executado
Kapil
fonte
2
Isso adicionará um comando automático extra toda vez que .vimrcfor fornecido. Para evitar isso, a linha deve estar cercada por um augroup que exclua o comando. Veja :help augroup-delete.
Rich
: augroup testgroup: autocmd! : au BufEnter * .py: TagbarToggle <CR> augroup END está ok?
kapil
1
Parece bom para mim!
Rich
10

Na minha opinião, o método mais limpo de fazer isso é simplesmente adicionar o comando a um arquivo no seu .vim/vimfilesdiretório:

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

ou para Windows:

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

Essa técnica está documentada em :help ftplugin-overrule(item 3 da lista), embora o contexto (alteração de configurações) seja um pouco diferente.

Ele oferece os seguintes benefícios sobre a técnica de comando automático descrita por kapil .

  1. Menos código . Você acabou de escrever o Vimscript que deseja executar. Você não precisa de código de um autocommand e coloque-a augroupe autocommand!comandos claros.

  2. Menos sobrecarga . O Vim já está detectando o tipo de arquivo e verificando a existência do after/ftplugin/filetypearquivo: por que adicionar um comando automático adicional que executa a mesma finalidade?

  3. Limpador.vimrc . Eu acho que é melhor ter a funcionalidade específica do tipo de arquivo separada da minha .vimrc. (Porém, alguns discordam disso: veja as desvantagens abaixo.)

Ele também tem algumas desvantagens menores:

  1. Só funciona se você estiver usando a detecção de tipo de arquivo do Vim. ( :help filetype)

    No entanto, essa geralmente é uma das primeiras configurações que as pessoas ativam em seu .vimrc, e eu aposto que quase todos os usuários do Vim já o têm ativado.

  2. Algumas pessoas preferem manter todas as suas configurações em seus .vimrcarquivos.

Rico
fonte
1
+1 para ftplugin/<filetype>.vim, melhor separação de interesses :)
LEI