Comment remplacer les tabulations par des espaces dans l'Atome?
Que j'ai commencé à travailler avec l'Atome éditeur de texte, j'ai utilisé l'onglet-indentation, mais souhaitez changer 4-l'espace-l'indentation.
J'ai plusieurs fichiers qui doivent être mis à jour en conséquence
Quelle serait la meilleure façon de le faire?
Vous devez vous connecter pour publier un commentaire.
Atome a un outil intégré pour cette
Activer la commande de la palette (MajCmdP sur Mac, CtrlMajP sur Windows/Linux) et de rechercher pour "convertir l'espace" ou "onglet convertir". Vous devriez trouver ces trois commandes sont disponibles:
Convertir les Tabulations vs Convertir Tous les Onglets
Dans les commentaires que vous avez observé que l'utilisation de "Convertir les Tabulations en Espaces de" casser de l'indentation en Python, mais "Convertir Tous les Tabulations en Espaces" a fonctionné correctement. Vous avez demandé quelle était la différence entre les deux est.
Je ne connaissais pas la réponse, donc je suis allé à la recherche. Ceci est défini dans les "espaces" de package, la source qui peut être trouvé sur Github à atom/espaces.
À la recherche dans lib/whitespace.js, j'ai trouvé ceci:
Comme vous pouvez le voir, la fonction correspondante est ici
convertTabsToSpaces
. Dans le "convertir tous les" variante, la seule différence est que dans un deuxième argument (optionnel) est passé, et se mit àtrue
.À la recherche à la définition de
convertTabsToSpaces
, la différence est que la regex est modifiée en fonction de l'état de cet argument booléen.De la ligne pertinente ici est:
Donc dans le "convertir tous les" variante, la regex ne se soucie pas être ancré au début de la ligne (
^
n'est pas utilisé), et chaque onglet est propre remplacement (plutôt que les groupes de caractères de tabulation être considéré comme un seul de remplacement --\t
vs\t+
).Pourquoi il a cassé l'indentation de Python
Je ne sais pas quel fichier que vous avez utilisé, mais j'ai utilisé un simple fichier de test comme ceci, en retrait complètement avec des caractères de tabulation.
Après l'utilisation de "Convertir les Tabulations en Espaces", elle ressemblait à ça:
Woah! C'est maintenant un
SyntaxError
. Essayez de nouveau avec "Convertir Tous les Tabulations en Espaces":Cela se produit parce que dans le premier cas, les groupes d'onglets sur la marge de gauche sont, comme une collection, réduit à un espace en retrait. Depuis la regex est
^\t+
, il n'a pas d'importance si la ligne est en retrait avec 1, 2, 8, 24 onglets... ils sont tous remplacés par un seul niveau de retrait, mais dont les espaces.Honnêtement, je ne sais pas ce que le point de ce qui est... qui semble être un bug.
Dans le second cas, chaque onglet est converti à l'équivalent à partir de l'espace de la largeur (c'est à dire chaque onglet est converti en 4 espaces, même s'il est adjacent à un autre caractère de tabulation).
Alors que c'est celui que vous voulez probablement.
Une mise en garde: il n'est plus limitée à la marge de gauche (il n'y a pas de
^
d'ancrage), donc si vous avez intégré des caractères de tabulation ailleurs, ceux-ci vont également être convertis. Ce n'est pas une pratique normale dans le code de mon expérience, mais pour info, dans le cas où il est important pour vous.Whitespace: Convert Tabs to Spaces
supprime tous les indentations, au moins pourpython
fichiers.Whitespace: Convert Spaces to Tabs
etWhitespace: Convert All Tabs to Spaces
sont celles qui fonctionnent comme prévu pour moi.Convert Tabs
etConvert All Tabs
?Une solution simple que j'ai trouvé après quelques recherches, est à l'aide de la "Remplacer Tout" outil de.
Il suffit d'ouvrir chaque fichier, puis ouvrir le Panneau de recherche (cmdF pour Mac).
Trouver dans le tampon courant (avec
use regex
l'option est activée):Remplacer dans le tampon courant: