web-dev-qa-db-fra.com

Définition des préférences d'espace blanc Vim par type de fichier

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

  • 2 espaces lors du codage 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 blanc par type de fichier?

143
nelstrom

il existe de nombreuses façons, mais voici une méthode simple et 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
228
Peter

La réponse de Peter est assez simple, mais malheureusement, les options ne sont pas bonnes. Vous devez plutôt 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

Notez également:

  • Vous pouvez créer des caractères de tabulation vim show en utilisant :set list.
  • Une fois que les options tab/espace sont correctement définies, vous pouvez faire vim réparer le fichier (remplacer les espaces par des tabulations ou vice versa) en utilisant le :retab! commande.
80
too much php

+1 à la réponse de Peter, mais Vim propose également une autre solution. Si vous voulez faire quelque chose de plus compliqué qu'un seul setlocal, comme configurer tout un tas d'options, de commandes et de mappages à la fois, alors la fonction de plugin de type de fichier de vim vient à la rescousse.

Vous devez avoir filetype plugin on ou filetype plugin indent on dans votre .vimrc, puis pour créer un plugin pour par exemple Ruby vous pouvez créer ~/.vim/ftplugin/Ruby.vim. Techniquement, vous pouvez utiliser toutes les commandes que vous aimez ici, à exécuter lorsqu'un fichier Ruby est chargé, mais les recommandations incluent setlocal, map <buffer>, command -buffer et la définition des fonctions. Beaucoup plus d'informations sont dans le Guide de l'utilisateur; si vous connaissez assez bien le script vim, passez à :help 41.11, sinon lire :help usr_40 et :help usr_41.

33
hobbs

Il y a aussi un script Nice 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 un style de codage différent.

J'utilise une autocommande dans mon . Vimrc :

:autocmd BufReadPost * :DetectIndent 
10
Benedikt Waldvogel

Pour insérer des caractères d'espace 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'espace qui seront insérés lorsque vous appuyez sur la touche de tabulation, 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
bartoindahouse