web-dev-qa-db-fra.com

Code Visual Studio: le format n'utilise pas les paramètres d'indentation

Lorsque vous utilisez la commande Format Code dans Visual Studio Code, les paramètres d'indentation ne sont pas respectés ("editor.tabSize": 2). Il utilise une taille de tabulation de 4 à la place. Des idées pourquoi cela se produit?

Merci!

90
AndyPerlitch

Le nombre d'espaces à utiliser pour le formatage provient d'un emplacement différent. J'utilise la version 1.0 et voici ce que j'ai fait pour résoudre ce problème (je suppose que vous utilisez des espaces au lieu de tabulations):

En bas de l'éditeur, à droite, cliquez sur "Espaces: #":

 status bar on the right

Ensuite, un menu apparaîtra en haut. Sélectionnez "Retrait à l'aide d'espaces":

 select indentation type

Enfin, vous pouvez sélectionner le nombre d’espaces où vous souhaitez que vos fichiers soient mis en retrait.

 select tab size

La prochaine fois que vous formatez un fichier, vous devriez pouvoir obtenir l’espacement que vous avez configuré.

157
Maleki

Visual Studio Code détecte l'indentation actuelle par défaut et l'utilise - en ignorant le .editorconfig

définir également "editor.detectIndentation" sur false  

(Fichiers -> Préférences -> Paramètres)

58
jnkb

Si la réponse de @ Maleki ne fonctionne pas pour vous, vérifiez si vous avez un fichier .editorconfig dans votre dossier de projet.

Par exemple, la CLI angulaire en génère un avec un nouveau projet qui ressemble à ceci

# Editor configuration, see http://editorconfig.org
root = true

[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true

[*.md]
max_line_length = off
trim_trailing_whitespace = false

Changer le indent_size ici est nécessaire car il semble que cela va écraser tout ce qui se trouve dans votre espace de travail ou vos paramètres utilisateur .vscode.

34
seangwright

Pour ma part, ce problème a été causé par l'utilisation du plug-in prettier VSCode sans avoir un fichier de configuration plus joli dans l'espace de travail.

La désactivation du plugin a résolu le problème. Il aurait aussi probablement pu être corrigé en s’appuyant sur la plus jolie config.

6
tailattention

Très probablement, vous avez une extension de formatage installée, par exemple. Formatage JS-CSS-HTML .

Si c'est le cas, ouvrez simplement la palette de commandes, tapez "Formatter" et sélectionnez Formatter Config. Puis éditez la valeur de "indent_size" comme bon vous semble.

P.S. N'oubliez pas de redémarrer Visual Studio Code après l'édition :)

5
Albert Timashev

Si vous êtes venu ici de Google parce que l'onglet n'est pas indenté, c'est peut-être aussi parce que "Tabulation déplace le focus" est activé. Il se trouve en bas à droite, et si vous avez un moniteur assez grand, vous risquez de le rater même s’il est en surbrillance.

 enter image description here

Cliquez sur la zone verte ou sur Ctrl + M pour l’arrêter. Je ne suis pas sûr qu'il puisse être complètement désactivé, mais je ne sais pas encore pourquoi un éditeur de code voudrait jouer avec quelque chose comme l'indentation.

2
StingyJack

les paramètres ci-dessous ont résolu mon problème

  "editor.detectIndentation": false,
  "editor.insertSpaces": false,
  "editor.tabSize": 2,
2
rashidnk

J'avais un problème similaire - peu importe ce que je faisais, je ne pouvais pas coller la taille de tabulation à 2, même si cela se trouve dans mes paramètres utilisateur - cela était dû à l'extension EditorConfig . Il recherche un fichier .editorconfig dans votre répertoire de travail actuel et, s'il n'en trouve pas (ou celui qu'il trouve ne spécifie pas root=true), il continue à rechercher les répertoires parent jusqu'à ce qu'il en trouve un.

Il se trouve que j'avais un .editorconfig dans un répertoire parent du répertoire dans lequel je mettais tous mes nouveaux projets de code, et il spécifiait un tabSize de 4. Supprimer ce fichier corrigeait mon problème.

2
bantic

Si vous utilisez un plugin (dans mon cas, Vetur, pour vue.js), ceux-ci peuvent définir leurs propres paramètres de formatage des onglets.

Ouvrez vos paramètres, recherchez "format" et parcourez les paramètres de plug-in pertinents susceptibles de remplacer le format d'onglet global. Cela a fonctionné pour moi. une fois les paramètres de l'onglet Vetur mis à jour pour correspondre à mes préférences (onglets 4 tailles dans mon cas), le formatage des documents .vue a commencé à fonctionner correctement

 enter image description here

2
Ciabaros

J'ai parfois ce même problème. VSCode va soudainement perdre son esprit et ignorer complètement tout paramètre d'indentation que je lui dirai, même s'il a indenté le même fichier correctement toute la journée.

J'ai editor.tabSize défini sur 2 (ainsi que editor.formatOnSave défini sur true). Lorsque VSCode perturbe un fichier, j'utilise les options situées au bas de l'éditeur pour modifier le type et la taille de l'indentation, en espérant que quelque chose fonctionnera, mais VSCode insiste sur l'utilisation d'une taille d'indentation de 4.

Le correctif? Redémarrez le VSCode. Il devrait revenir avec le statut d'indentation montrant quelque chose qui ne va pas (dans mon cas, 4). En ce qui me concerne, j'ai dû modifier le paramètre, puis enregistrer pour le modifier, mais c'est probablement à cause de mon paramètre editor.formatOnSave.

Je n'ai pas compris pourquoi cela se produit, mais pour moi, c'est généralement lorsque je modifie un objet imbriqué dans un fichier JS. Cela va soudainement faire une très étrange indentation à l'intérieur de l'objet, même si je travaille dans ce fichier depuis un moment et que l'indentation est parfaite.

1
MrOBrian

Je pense que vscode utilise autopep8 pour formater .py par défaut.

"PEP 8 - Guide de rédaction de Python Code | Python.org"

Selon ce site Web, ce qui suit peut expliquer pourquoi vscode utilise toujours 4 espaces.

Utilisez 4 espaces par niveau d'indentation.

0
Season Choi

Le plugin VSCode Vetur; utilisé pour les applications VueJS était prioritaire sur le réglage pour moi. 

Définir vetur.format.options.tabSize sur le nombre d'espaces que je préférais le faisait fonctionner.

0
Swoot