Comment exécuter une commande au démarrage de vim

11

Je viens d'installer un plugin pour python qui affiche l'arborescence des méthodes. Je voudrais donc ouvrir l'arborescence au démarrage, donc pas besoin d'appuyer sur les boutons à chaque fois que j'ouvre un .pyfichier. Mais, je veux que cette commande soit exécutée uniquement pour les .pyfichiers. Voici à quoi ressemble ma pièce vimrc:

nmap <F8> :TagbarToggle<CR>

Existe-t-il un moyen d'exécuter cette commande au démarrage uniquement pour les .pyfichiers?

St.Antario
la source
Howdy St. Anmonton. Vous voudrez peut-être noter que votre réponse acceptée a beaucoup moins de votes positifs que la réponse alternative.
poussins

Réponses:

8

Ajoutez votre .vimrc:

au BufEnter *.py :TagbarToggle<CR>

  • auest autocmd, exécutez la commande automatiquement.

  • BufEnter c'est lorsque vous entrez le fichier pour la première fois.

  • *.py est pour le type de fichier python.

  • et le reste est la commande à exécuter
kapil
la source
2
Cela ajoutera une autocommande supplémentaire chaque fois que la .vimrcsource est. Pour éviter cela, la ligne doit être entourée d'un augroup qui supprime la commande. Tu vois :help augroup-delete.
Rich
: augroup testgroup: autocmd! : au BufEnter * .py: TagbarToggle <CR> augroup END est-ce correct?
kapil
1
Cela me semble correct!
Rich
10

À mon avis, la méthode la plus propre est de simplement ajouter la commande à un fichier dans votre .vim/vimfilesrépertoire:

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

ou pour Windows:

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

Cette technique est documentée dans :help ftplugin-overrule(élément de liste 3), bien que le contexte (modification des paramètres) soit légèrement différent.

Il offre les avantages suivants par rapport à la technique d'autocommande décrite par kapil .

  1. Moins de code . Vous venez d'écrire le Vimscript que vous souhaitez exécuter. Vous n'avez pas besoin de coder une autocommande et entourez avec augroupet des autocommand!commandes claires.

  2. Moins de frais généraux . Vim détecte déjà le type de fichier et vérifie l'existence du after/ftplugin/filetypefichier: pourquoi ajouter une autocommande supplémentaire qui remplit la même fonction?

  3. Plus propre.vimrc . Je pense qu'il est préférable d'avoir une fonctionnalité spécifique au type de fichier séparée de la mienne .vimrc. (Cependant, certains ne sont pas d'accord avec cela: voir les inconvénients ci-dessous.)

Il présente également quelques inconvénients mineurs:

  1. Cela ne fonctionne que si vous utilisez la détection de type de fichier de Vim. ( :help filetype)

    Cependant, c'est généralement l'un des premiers paramètres que les gens activent dans leur .vimrc, et je parierais que presque tous les utilisateurs de Vim l'ont déjà activé.

  2. Certaines personnes préfèrent conserver toute leur configuration dans leur .vimrcfichier.

Riches
la source
1
+1 pour ftplugin/<filetype>.vim, meilleure séparation des préoccupations :)
LEI