web-dev-qa-db-fra.com

Comment réparer/convertir l'indentation d'espace dans Sublime Text?

Exemple: Si j'ai un document avec une indentation de 2 espaces et que je veux qu'il en ait 4, comment puis-je le convertir automatiquement à l'aide de l'éditeur de texte Sublime?

216
Magne

Voici une astuce de Sublime Text 2 ou 3 pour convertir l'espacement d'indentation dans un document.

TL; DR:

Conversion de 2 espaces en 4 espaces:

Assurez-vous que la largeur de tabulation est définie sur 2. Convertissez votre indentation de 2 espaces en tabulations, passez à la largeur de tabulation 4, puis convertissez-la en espaces.

La description détaillée:

Aller à:

View -> Indentation

Il devrait lire:

  • Indent using spaces [x]
  • Tab width: 2

Sélectionner:

  • Convert Indentation to Tabs

Puis sélectionnez:

  • Tab width: 4
  • Convert Indentation to Spaces

Terminé.

503
Magne

En fait, j’ai trouvé qu’il était préférable, pour ma santé mentale, de définir les préférences de l’utilisateur de la manière suivante:

"translate_tabs_to_spaces": true,
"tab_size": 2,
"indent_to_bracket": true,
"detect_indentation": false

Le detect_indentation: false est particulièrement important, car il oblige Sublime à respecter ces paramètres dans chaque fichier, contrairement aux paramètres View -> Indentation

Si vous souhaitez en profiter, vous pouvez également définir un raccourci clavier pour réindenter automatiquement votre code (YMMV) en collant les éléments suivants dans Sublime -> Preferences -> Key Binding - User:

[
  { "keys": ["ctrl+i"], "command": "reindent" }
]

et pour visualiser les espaces:

"indent_guide_options": ["draw_active"],
"trim_trailing_white_space_on_save": true,
"ensure_newline_at_eof_on_save": true,
"draw_white_space": "all",
"rulers": [120],
71
Brian Gerstle

J'ai trouvé, dans mon esprit, une solution plus simple que Magne:

Sur mac:

"cmd+f" => "  "(two spaces) => "alt+enter" => "arrow right" => "  "(two more spaces) => set tab width to 4(this can be done before or after.

Sous Windows ou d’autres plates-formes, changez cmd+f et alt+enter avec vos touches de raccourci find et select all.

Remarque: cette méthode est sujette aux "erreurs" si vous avez plus d'un espace dans votre code. C'est donc moins sûr que la méthode de Magne, mais c'est plus rapide (du moins pour moi).

9
Automatico

Alors que beaucoup de suggestions fonctionnent lors de la conversion de 2 -> 4 espaces. J'ai rencontré des problèmes lors de la conversion 4 -> 2.

Voici ce que j'ai fini par utiliser: 

Sublime Text 3/Packages/User/to-2.sublime-macro

[
  { "args": null, "command": "select_all" },
  { "args": { "set_translate_tabs": true }, "command": "unexpand_tabs" },
  { "args": { "setting": "tab_size", "value": 1 }, "command": "set_setting" },
  { "args": { "set_translate_tabs": true }, "command": "expand_tabs" },
  { "args": { "setting": "tab_size", "value": 2 }, "command": "set_setting" }
]
7
Kyle Finley

Si vous trouvez que la recherche et le remplacement sont plus rapides à utiliser, vous pouvez utiliser un remplacement de regex comme ceci:

Find (regex): (^|\G) {2} (Au lieu de "{2}" <space>{2}, vous pouvez simplement écrire deux espaces. Utilisez-le ici pour plus de clarté.)

Remplacez-le par 4 espaces, ou ce que vous voulez, comme \t.

5
Qtax

J'ai écrit un plugin pour cela. Vous pouvez le trouver ici ou chercher "ReIndent" dans le contrôle du paquet. Il fait essentiellement la même chose que Kyle Finley a écrit, mais de manière pratique avec des raccourcis pour convertir entre 2 et 4 et inversement.

5
kamilkp

Vous devez ajouter ce code à vos raccourcis clavier personnalisés: 

{ "keys": ["ctrl+f12"], "command": "set_setting", "args": {"setting": "tab_size", "value": 4} }

en appuyant sur ctrl + f12, votre fichier sera réindiqué à une taille de tabulation de 4. Si vous souhaitez une taille de tabulation différente, il vous suffit de modifier le nombre "valeur". Le format est un simple json.

2
patricia bezek

La chose la plus facile que j'ai faite était, 

changé mon indentation en onglets

et cela a résolu mon problème.

Vous pouvez faire la même chose, 

aux espaces

ainsi que par votre besoin.

Mentionné l'instantané de la même chose.

 enter image description here

0
Indrajeet Gour

Récemment, j'ai rencontré un problème similaire. J'utilisais l'éditeur sublime ..__ Ce n'est pas un problème avec le code mais avec l'éditeur.

Les modifications ci-dessous des paramètres de préférence ont fonctionné pour moi.

Menu Texte sublime -> Préférences -> Paramètres: Spécifique à la syntaxe :

{
    "tab_size": 4,
    "translate_tabs_to_spaces": true
}
0
Ajay