1 - Si vous avez des espaces et souhaitez onglets.
Tout d'abord, vous devez décider combien d'espaces aura un seul onglet. Cela dit, supposons que vous avez les lignes avec de grands espaces 4, ou 8... Que vous vous rendez compte que vous voulez probablement un onglet à 4 places. Maintenant, avec cette info, vous n':
:set ts=4
:set noet
:%retab!
Il y a un problème ici! Cette séquence de commandes va chercher tous votre texte, non seulement les espaces en début de ligne. Que signifie une chaîne de caractères comme: "Hey,␣this␣␣␣␣is␣4␣spaces"
deviendra "Hey,␣this⇥is␣4␣spaces"
, mais ne l'est pas! ses une tab!.
Pour régler ce petit problème je vous conseille un search
, au lieu de retab
.
:%s/^\(^I*\)␣␣␣␣/\1^I/g
Cette recherche va rechercher dans tout le fichier pour toutes les lignes commençant par quel que soit le nombre d'onglets, suivi de 4 espaces, et de la remplacer pour que le nombre d'onglets il a trouvé plus un.
Cela, malheureusement, ne sera pas exécuté à la fois!
Au premier abord, le fichier aura lignes commençant par des espaces. La recherche va ensuite convertir seulement les 4 premières places sur un onglet, et de laisser les suivantes...
Vous devez répéter la commande. Combien de fois? Jusqu'à ce que vous obtenez une pattern not found
. Je ne peux pas penser à un moyen d'automatiser le processus encore. Mais si vous le faites:
`10@:`
Vous êtes probablement fait. Cette commande répète la dernière recherche/remplacer pour 10 fois. Ses pas probable que votre programme sera donc de nombreux tirets. Si elle a, il suffit de répéter à nouveau @@
.
Maintenant, juste pour compléter la réponse. Je sais que vous avez demandé pour le contraire, mais vous ne savez jamais quand vous avez besoin de défaire les choses.
2 - Vous avez des onglets et souhaitez espaces.
Tout d'abord, décidez du nombre de places que vous voulez que vos onglets pour être converti. Permet de dire que vous voulez que chaque onglet de 2 espaces. Vous effectuez alors:
:set ts=2
:set et
:%retab!
Cela aurait le même problème avec des chaînes. Mais comme son meilleur style de programmation à ne pas utiliser des onglets à l'intérieur de chaînes, vous êtes réellement faire une bonne chose ici. Si vous avez vraiment besoin d'un onglet à l'intérieur d'une chaîne, utilisez \t
.