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?
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
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!
.
+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
.
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
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