147 votes

Configuration des préférences d'espacement de Vim par type de fichier

À mon travail, je suis tenu de suivre le style maison pour l'indentation, qui est le suivant :

  • 2 espaces lors du codage html et ruby
  • tabs lors du codage de javascript, avec tabwidth=4 recommandé

Quelle est la meilleure façon de spécifier différentes préférences d'espacement par type de fichier ?

234voto

Peter Points 38320

Il existe de nombreuses façons de procéder, mais voici une méthode simple et facile à comprendre. ~/.vimrc :

autocmd FileType html setlocal ts=2 sts=2 sw=2
autocmd FileType ruby setlocal ts=2 sts=2 sw=2
autocmd FileType javascript setlocal ts=4 sts=4 sw=4

82voto

too much php Points 27983

La réponse de Peter est assez simple, mais malheureusement les options ne sont pas les bonnes. Vous devez utiliser les options suivantes à la place :

autocmd Filetype html setlocal ts=2 sw=2 expandtab
autocmd Filetype ruby setlocal ts=2 sw=2 expandtab
autocmd Filetype javascript setlocal ts=4 sw=4 sts=0 noexpandtab

A noter également :

  • Vous pouvez faire en sorte que vim affiche les caractères de tabulation en utilisant :set list .
  • Une fois que les options de tabulation et d'espacement sont correctement définies, vous pouvez faire en sorte que vim répare le fichier (en remplaçant les espaces par des tabulations ou vice versa) en utilisant l'option :retab! commandement.

33voto

hobbs Points 71946

+1 à la réponse de Peter, mais Vim offre également une autre solution. Si vous voulez faire quelque chose de plus compliqué qu'un simple setlocal Si vous souhaitez configurer un grand nombre d'options, de commandes et de mappings en une seule fois, la fonctionnalité de plugin filetype de vim vient à la rescousse.

Vous devez avoir filetype plugin on o filetype plugin indent on dans votre .vimrc et ensuite, pour créer un plugin pour ruby, par exemple, vous pouvez créer ~/.vim/ftplugin/ruby.vim . Techniquement, vous pouvez utiliser toutes les commandes que vous voulez ici, à exécuter lorsqu'un fichier Ruby est chargé, mais les commandes recommandées sont les suivantes setlocal , map <buffer> , command -buffer et la définition des fonctions. Vous trouverez de nombreuses autres informations dans le Guide de l'utilisateur ; si vous êtes déjà familier avec le scriptage de vim, passez directement à la page suivante :help 41.11 sinon, lire :help usr_40 y :help usr_41 .

10voto

bene Points 4294

Il y a aussi un joli vim script : DetectIndent qui essaie de détecter l'indentation d'un fichier que vous ouvrez. C'est très pratique si vous travaillez avec de nombreux fichiers avec un style de codage différent.

J'utilise une commande automatique dans mon .vimrc :

:autocmd BufReadPost * :DetectIndent

1voto

bartoindahouse Points 401

Pour insérer des caractères d'espacement chaque fois que vous appuyez sur la touche de tabulation, définissez l'option "expandtab" :

:set expandtab

L'étape suivante consiste à contrôler le nombre de caractères d'espacement qui seront insérés lorsque vous appuyez sur la touche de tabulation, en définissant l'option "tabstop". Par exemple, pour insérer 2 espaces pour une tabulation, utilisez :

:set tabstop=2

réf : http://vim.wikia.com/wiki/Converting_tabs_to_spaces

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