Paramétrage des préférences de Vim whitespace par filetype

à mon travail, je suis tenu de suivre le style de la maison pour l'indentation, qui va comme suit:

  • 2 espaces pour coder html et ruby
  • onglets lors du codage javascript, avec tabwidth=4 recommandé

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

135
demandé sur nelstrom 2009-10-14 00:06:21

5 réponses

il y a plusieurs façons, mais voici une façon simple, facile à comprendre. ajoutez ces lignes à votre ~/.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
213
répondu Peter 2018-07-22 19:08:28

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

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

à noter Également:

  • vous pouvez faire afficher les caractères de l'onglet vim en utilisant :set list .
  • une fois que vous avez réglé les options tab/space correctement, vous pouvez faire réparer le fichier vim (remplacer les espaces par des onglets ou vice versa) en utilisant la commande :retab! .
74
répondu too much php 2009-10-13 23:43:57

+1 à la réponse de Peter, mais Vim fournit une autre solution aussi bien. Si vous voulez faire quelque chose de plus compliqué qu'un simple setlocal , comme configurer un tas d'options, de commandes et de mappages à la fois, alors la fonctionnalité de plugin filetype de vim vient à la rescousse.

vous devez avoir filetype plugin on ou filetype plugin indent on dans votre .vimrc , et ensuite pour créer un plugin pour par exemple ruby vous pouvez créer ~/.vim/ftplugin/ruby.vim . Techniquement, vous pouvez utiliser les commandes que vous comme ici, pour être lancé quand un fichier Ruby est chargé, mais ceux qui sont recommandés comprennent setlocal , map <buffer> , command -buffer , et définir les fonctions. Beaucoup plus d'informations sont dans le guide de L'utilisateur; si vous êtes assez familier avec le script vim puis passer à :help 41.11 , sinon lire :help usr_40 et :help usr_41 .

32
répondu hobbs 2009-10-13 20:23:47

il y a aussi un joli script vim: 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 différents style de codage.

j'utilise un autocommand dans mon .vimrc :

:autocmd BufReadPost * :DetectIndent 
9
répondu Benedikt Waldvogel 2013-01-10 09:04:49

pour insérer des caractères d'Espace chaque fois que la touche tab est pressée, définissez l'option' expandtab':

:set expandtab

la prochaine étape est de contrôler le nombre de caractères d'espace qui seront insérés lorsque la touche tab est pressée, définissez l'option 'tabstop'. Par exemple, pour insérer 2 espaces pour un onglet, utilisez:

:set tabstop=2

ref: http://vim.wikia.com/wiki/Converting_tabs_to_spaces

0
répondu bartoindahouse 2015-06-09 13:54:55