Visual Studio Code: le format n'utilise pas les paramètres de retrait

145

Lorsque vous utilisez la Format Codecommande dans Visual Studio Code, elle ne respecte pas mes paramètres de retrait ( "editor.tabSize": 2). Il utilise à la place une taille d'onglet de 4. Des idées pourquoi cela se produit?

Merci!

AndyPerlitch
la source
Quelle langue? Visual Studio Code délègue la mise en forme au formateur de langage. Certains formateurs respectent le paramètre de retrait. Par exemple, C #, qui est géré par OmniSharp, et doit être configuré à l'aide de omnisharp.json
Ian Yang
Cela m'a pris du temps à comprendre: j'avais un fichier .cs avec des tabulations mixtes et des espaces-retraits et je voulais le formater avec tous les onglets (b / c la majorité des lignes avaient des onglets). J'ai essayé différentes valeurs de paramètres avec "Format du document" et "Sélection du format" mais je n'ai pas eu de chance. Enfin, j'ai trouvé l'action "Convertir l'indentation en tabulations" (voir l'image dans la réponse de @ Maleki) et cela a fait ce que je voulais faire. (J'ai aussi récemment découvert ctrl-shift-p! ... oui, je suis nouveau dans VS Code)
KevinVictor

Réponses:

230

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

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

barre d'état à droite

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

sélectionnez le type d'indentation

Enfin, vous pouvez sélectionner le nombre d'espaces que vous souhaitez que vos fichiers soient indentés.

sélectionnez la taille de l'onglet

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

Maleki
la source
29
Ce paramètre n'est pas utilisé lors de l'application du format automatique (clic droit -> Format du code). Il utilise toujours 4 espaces.
kiml42
Vous devez à la fois configurer vos paramètres personnels pour l'espace de travail ou l'éditeur (ou les deux). Les nouveaux fichiers ramasseront ce paramètre et afficheront «2» par exemple, dans la barre d'état selon ces captures d'écran. Ensuite, vous pouvez mettre en forme automatiquement. Pour les fichiers existants, définissez d'abord les paramètres de votre espace de travail / éditeur sur «utiliser des onglets» ou «utiliser des espaces» et définissez le nombre d'espaces, puis vous pouvez utiliser la méthode ci-dessus pour formater automatiquement les fichiers existants.
rmcsharry
5
Définissez les paramètres de l'utilisateur et de l'espace de travail, définissez-le dans la barre inférieure, fichier rouvert - le formatage automatique utilise toujours 4 espaces ...
Jared
3
A dû quitter et redémarrer vscode après avoir défini les paramètres par défaut de l'utilisateur et de l'espace de travail pour les paramètres à prendre. Ce n'est qu'alors qu'il a cessé d'essayer d'utiliser 4 espaces sur mes fichiers JS.
John Pettitt
11
@Jared Je pense que vous utilisez le JS-CSS-HTMLplugin. Dans ce cas, appuyez sur F1et choisissez le formateur et définissez votre indentation ici. Il semble remplacer toutes les options évoquées ci-dessus.
Atif Mohammed Ameenuddin
113

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

Définissez également "editor.detectIndentation" sur false

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

capture d'écran

jnkb
la source
Si cela se produit, vous avez probablement une indentation incohérente dans le fichier. J'avais un fichier avec des onglets partout à l'exception de quelques lignes avec deux espaces (qui sait pourquoi), qui ont fini par être détectés comme utilisant des onglets mais avec une taille d'onglet de 2.
isanae
49

Si la réponse de @ Maleki ne fonctionne pas pour vous, vérifiez si vous avez un .editorconfigfichier 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

Il indent_sizeest nécessaire de modifier ici car il semble qu'il remplacera tout ce qui se trouve dans votre .vscodeespace de travail ou dans les paramètres utilisateur.

seangwright
la source
5
J'ai dû redémarrer VSCode pour que le changement prenne effet dans l'EDI.
JOpuckman
3
Dans mon cas, cela a été causé par le .editorconfigfichier de mon dossier personnel. D'une manière ou d'une autre, cela fait que VSCode ignore tous les paramètres spécifiques à Workspace. Très ennuyant.
xji
20

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

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

entrez la description de l'image ici

Ciabaros
la source
C'est vrai, dans mon cas, j'avais également besoin de définir la taille de l'onglet dans les paramètres de l'extension Prettier.
tonix
A noter que le SCSS Formatterplugin utilise ses propres paramètres par exemple, il faut donc aller à Settings > Extensions > SCSS Formatter > Use Tabspour le forcer à utiliser des onglets par exemple.
SmartyP
13

Pour moi, ce problème a été causé par l'utilisation du prettierplugin 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. Cela aurait probablement aussi pu être corrigé en s'appuyant sur la plus jolie configuration.

attention
la source
1
Pour moi, c'était le plugin "Beautify".
Matthew Smith
J'ai eu le même problème avec "Clang-Format" et le fichier de configuration ".clang-format".
repkap11
6

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

Si tel est le cas, ouvrez simplement la palette de commandes, tapez "Formatter" et sélectionnez Formatter Config. Modifiez ensuite la valeur de "indent_size"comme vous le souhaitez.

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

Albert Timashev
la source
6

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

  "editor.detectIndentation": false,
  "editor.insertSpaces": false,
  "editor.tabSize": 2,
rashidnk
la source
cela fonctionne si vous travaillez avec des fichiers avec 2 onglets d'espaces uniquement!
Dominux
2

Si vous êtes venu ici depuis Google parce que l'onglet n'est pas en retrait, cela peut également être dû au fait que "Tab Moves Focus" est activé. Il est en bas à droite, et si vous avez un moniteur assez grand, vous risquez de le manquer malgré sa mise en évidence.

entrez la description de l'image ici

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é, alors encore une fois, je ne sais pas pourquoi un éditeur de code voudrait jouer avec quelque chose comme l'indentation.

StingyJack
la source
2

J'ai eu un problème similaire - peu importe ce que j'ai fait, je ne pouvais pas faire en sorte que la taille de l'onglet reste à 2, même si c'est dans mes paramètres utilisateur - qui a fini par être dû à l' extension EditorConfig . Il recherche un .editorconfigfichier 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 continuera à regarder les répertoires parents jusqu'à ce qu'il en trouve un.

Il s'avère que j'avais un .editorconfigdans un répertoire parent du répertoire dans lequel j'ai mis tous mes nouveaux projets de code, et il a spécifié un tabSize de 4. La suppression de ce fichier a résolu mon problème.

bantique
la source
1

J'ai parfois ce même problème. VSCode perdra soudainement la tête et ignorera complètement tout paramètre d'indentation que je lui dis, même s'il a mis en retrait le même fichier toute la journée.

J'ai editor.tabSizemis à 2 (ainsi que editor.formatOnSavesur true). Lorsque VSCode gâche un fichier, j'utilise les options en bas de l'éditeur pour changer le type et la taille d'indentation, en espérant que quelque chose fonctionnera, mais VSCode insiste pour utiliser réellement une taille d'indentation de 4.

Le correctif? Redémarrez VSCode. Il devrait revenir avec le statut de retrait indiquant quelque chose de mal (dans mon cas, 4). Pour moi, j'ai dû changer le paramètre, puis enregistrer pour qu'il effectue réellement le changement, mais c'est probablement à cause de mon editor.formatOnSaveparamètre.

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 indentation très étrange dans l'objet, même si j'ai travaillé dans ce fichier pendant un certain temps et que cela a été très bien.

MrOBrian
la source
0

Le plugin VSCode Vetur; utilisé pour les applications VueJS remplaçait le paramètre pour moi.

Définir vetur.format.options.tabSize sur mon nombre d'espaces préféré a permis de le faire fonctionner.

Swoot
la source
-1

Désactivez tous les plugins (puis activez-les un par un et vérifiez)

fider
la source