415 votes

Modification du comportement d'indentation Vim par type de fichier

Quelqu'un pourrait-il m'expliquer simplement la manière la plus simple de modifier le comportement d'indentation de vim en fonction du type de fichier? Par exemple, si j'ouvre un fichier python, il indenterait avec 2 espaces, mais si j'ouvre powershell, il utiliserait 4 espaces.

328voto

SpoonMeiser Points 6211

Vous pouvez ajouter .vim fichiers à exécuter chaque fois que vim passe à un type de fichier particulier.

Par exemple, j'ai un fichier ~/.vim/after/ftplugin/html.vim avec ce contenu:

setlocal shiftwidth=2
setlocal tabstop=2

Ce qui provoque vim utiliser les onglets avec une largeur de 2 caractères pour l'indentation ( noexpandtab option est définie ailleurs dans le monde dans ma configuration).

Ce qui est décrit ici: http://vimdoc.sourceforge.net/htmldoc/usr_05.html#05.4, faites défiler jusqu'à la section sur le type de fichier plugins.

216voto

graywh Points 4425

Utilisez ftplugins ou autocommands pour définir les options. (: h ftplugin pour plus d'informations)

Dans ~ / .vim / ftplugin / python.vim:

 setlocal sw=2 sts=2 et
 

Et n'oubliez pas de les activer dans ~ / .vimrc

 filetype plugin indent on
 

Ou dans ~ / .vimrc

 au FileType python setl sw=2 sts=2 et
 

Je suggère également d'apprendre la différence entre «ts» et «m». Beaucoup de gens ne connaissent pas les «m».

63voto

Paul Tomblin Points 83687

Mettez les commandes autocmd basées sur le suffixe du fichier dans votre ~ / .vimrc

 autocmd BufRead,BufNewFile   *.c,*.h,*.java set noic cin noexpandtab
autocmd BufRead,BufNewFile   *.pl syntax on
 

Les commandes que vous cherchez sont probablement ts = et sw =

26voto

Jonathan Leffler Points 299946

Je travaille habituellement avec expandtab set, mais c'est mauvais pour makefiles. J'ai récemment ajouté:

 :autocmd FileType make set noexpandtab
 

à la fin de mon fichier .vimrc et il reconnaît Makefile, makefile, et * .mk comme makefiles et ne développe pas les onglets. Vraisemblablement, vous pouvez étendre cela.

19voto

Nello Points 77

Je suis toujours étonné par les gens qui changent la taille des onglets pour différents types de fichiers. Que diable faites-vous lorsque vous regardez un fichier en utilisant moins?

Personnellement, j'utilise ces paramètres dans .vimrc:

 autocmd FileType python set tabstop=8|set shiftwidth=2|set expandtab
autocmd FileType ruby set tabstop=8|set shiftwidth=2|set expandtab
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X