2010-08-19 29 views
3

Depuis un certain temps, j'ai utilisé tabstop = 4 dans mes fichiers source. Maintenant que j'écris beaucoup de javascript qui a de profondes indentations, un tabstop de 4 semble inutile, donc je veux le convertir en 2. Le problème est que j'utilise aussi "set expandtab". Donc simplement mettre tabstop = 2, n'aidera pas.modification tabstop de 4 à 2 après avoir utilisé expandtab (avec un minimum d'effort manuel)

Des suggestions sur la façon dont je peux convertir tous mes fichiers rapidement à tabstop 2?

Mes réglages actuels de .vimrc pertinents sont

set tabstop=4 
set shiftwidth=4 
set expandtab 

Répondre

10

Vous pouvez faire

" convert spaces to tabs first 
set noexpandtab 
set tabstop=4 
set shiftwidth=4 
retab! 
" now you have tabs instead of spaces, so insert spaces according to 
" your new preference 
set tabstop=2 
set shiftwidth=2 
set expandtab 
retab! 

dans une fenêtre vim, et il sera retab selon vos préférences. Vous pouvez probablement créer un mappage pour faciliter cela ou enregistrer une macro. Il pourrait y avoir un autre moyen, mais ce qui précède devrait fonctionner. (" est un commentaire)

+0

Génial. Cela a fonctionné pour moi. – Jayesh

5

Vous pouvez modifier vos paramètres, sélectionnez tous, et appuyez sur la touche = pour indentera:

ggVG= 

Je recommande également d'utiliser ftplugin pour spécifier les paramètres par type de fichier.

+1

Je * savais * qu'il y avait un moyen facile! –

+0

@Alok: Vous voudrez peut-être laisser votre réponse de toute façon. En regardant les documents VIM, il peut être fondamentalement différent de l'application de retrait. Je suppose qu'il devrait essayer les deux pour le savoir. –

+0

Eh bien, votre méthode réindemnise tout, ce qui, comme vous l'avez dit, est différent de la préservation de l'intention du retrait déjà dans le code. Bon point, je vais restaurer ma réponse. –