Comment exécuter une commande vim spécifique lors de l'ouverture d'un fichier avec une extension donnée?

9

Je veux que tous mes fichiers se terminant par .texaient une longueur de ligne de 80. Donc, chaque fois que j'ouvre un .texfichier dans vim, je tape :set tw=79. Que dois-je mettre dans mon .vimrc pour automatiser cela?

Et si je voulais travailler avec une liste spécifique de types de fichiers, par exemple, .md, .txt, et .tex?

JeremyKun
la source

Réponses:

10

Au lieu de vérifier l'extension et de définir la largeur de texte en conséquence, vous pouvez simplement créer un tex.vimfichier (le nom doit correspondre au type de fichier) dans .vim/ftplugin/ou pour Windows $HOME/vimfiles/ftplugin/et y définir la largeur de texte. Cela vous aidera à garder votre .vimrc propre.

Votre .vim/ftplugin/tex.vimfichier ressemblerait à:

setlocal textwidth=79

Comme l'a dit 8bittree dans les commentaires, vous devez également activer filetype pluginsvotre vimrc (je ne sais pas pourquoi personne ne l'activerait):

filetype plugin on

Lisez ceci pour plus d'informations: http://vim.wikia.com/wiki/Keep_your_vimrc_file_clean

ap0
la source
2
Vous voudrez également vous assurer que les plugins de type de fichier sont activés dans votre .vimrcavec filetype plugin on.
8bittree
8

Dans, ~/.vimrcvous pouvez ajouter la ligne suivante:

au BufReadPost,BufNewFile *.md,*.txt,*.tex setlocal tw=79

Pour les commandes supplémentaires, séparez-les par |.

Cela définira vos paramètres juste après la lecture du fichier ou l'ouverture d'un nouveau fichier dans le tampon pour des extensions spécifiques.

kenorb
la source
2
setpeut prendre n'importe quel nombre de paramètres. Quelque chose comme ça set tw=79 nowrap formatoptions+=jmarchera. Pas besoin d'un |(sauf si vous voulez appeler une commande différente, bien sûr) ;-)
Martin Tournoij