Visual Studio Code: Das Format verwendet keine Einrückungseinstellungen

143

Wenn Sie den Format CodeBefehl in Visual Studio Code verwenden, werden meine Einrückungseinstellungen ( "editor.tabSize": 2) nicht berücksichtigt . Stattdessen wird eine Tabulatorgröße von 4 verwendet. Irgendwelche Ideen, warum das passiert?

Vielen Dank!

AndyPerlitch
quelle
Welche Sprache? Visual Studio Code delegiert die Formatierung an den Sprachformatierer. Einige Formatierer beobachten die Einrückungseinstellung. Zum Beispiel C #, das von OmniSharp verwaltet wird und mit omnisharp.json konfiguriert werden sollte
Ian Yang
Ich habe lange gebraucht, um herauszufinden: Ich hatte eine CS-Datei mit gemischten Tabulatoren und Leerzeichen und wollte sie mit allen Tabulatoren formatieren (b / c hatten die meisten Zeilen Tabulatoren). Ich habe verschiedene Einstellungswerte mit "Dokument formatieren" und "Formatauswahl" ausprobiert, hatte aber kein Glück. Schließlich fand ich die Aktion "Einrückung in Tabulatoren konvertieren" (siehe das Bild in @ Malekis Antwort) und das tat, was ich tun wollte. (Ich habe kürzlich auch Strg-Umschalt-P entdeckt! ... ja, ich bin neu bei VS Code)
KevinVictor

Antworten:

228

Die Anzahl der für die Formatierung zu verwendenden Leerzeichen wird von einem anderen Speicherort übernommen. Ich verwende Version 1.0 und habe Folgendes getan, um das Problem zu beheben (ich gehe davon aus, dass Sie Leerzeichen anstelle von Tabulatoren verwenden):

Klicken Sie unten im Editor rechts auf "Leerzeichen: #":

Statusleiste rechts

Dann erscheint oben ein Menü. Wählen Sie "Einrücken mit Leerzeichen":

Einrückungstyp auswählen

Schließlich können Sie auswählen, um wie viele Leerzeichen Ihre Dateien eingerückt werden sollen.

Wählen Sie die Registerkartengröße

Wenn Sie das nächste Mal eine Datei formatieren, sollten Sie in der Lage sein, den von Ihnen konfigurierten Abstand zu erhalten.

Maleki
quelle
28
Diese Einstellung wird beim Anwenden des automatischen Formats nicht verwendet (Rechtsklick -> Formatcode). Es werden immer 4 Leerzeichen verwendet.
Kiml42
Sie müssen beides - konfigurieren Sie Ihre persönlichen Einstellungen entweder für den Arbeitsbereich oder den Editor (oder für beide). Neue Dateien übernehmen diese Einstellung und zeigen beispielsweise '2' in der Statusleiste gemäß diesen Screenshots an. Dann können Sie automatisch formatieren. Stellen Sie für vorhandene Dateien zuerst Ihre Arbeitsbereichs- / Editoreinstellungen auf "Tabulatoren verwenden" oder "Leerzeichen verwenden" und die Anzahl der Leerzeichen ein. Anschließend können Sie mit der oben beschriebenen Methode vorhandene Dateien automatisch formatieren.
rmcsharry
5
Stellen Sie sowohl Benutzer- als auch Arbeitsbereichseinstellungen ein, legen Sie sie in der unteren Leiste fest, öffnen Sie die Datei erneut - Autoformat verwendet immer noch 4 Leerzeichen ...
Jared
3
Musste vscode beenden und neu starten, nachdem sowohl die Benutzer- als auch die Arbeitsbereichsvorgaben für die Einstellungen festgelegt wurden. Erst dann hörte es auf zu versuchen, 4 Leerzeichen in meinen JS-Dateien zu verwenden.
John Pettitt
11
@ Jared Ich denke du benutzt das JS-CSS-HTMLPlugin. In diesem Fall Drücken Sie F1und wählen Sie Formatierer und setzen Sie dort Ihren Einzug. Es scheint alle oben diskutierten Optionen außer Kraft zu setzen.
Atif Mohammed Ameenuddin
111

Visual Studio Code erkennt standardmäßig den aktuellen Einzug und verwendet diesen - wobei die .editorconfig ignoriert wird

Setzen Sie auch "editor.detectIndentation" auf false

(Dateien -> Einstellungen -> Einstellungen)

Bildschirmfoto

jnkb
quelle
In diesem Fall haben Sie wahrscheinlich einen inkonsistenten Einzug in der Datei. Ich hatte überall eine Datei mit Tabulatoren, mit Ausnahme einiger Zeilen mit zwei Leerzeichen (wer weiß warum), die als Tabulatoren mit einer Tabulatorgröße von 2
erkannt wurden
49

Wenn die Antwort von @ Maleki für Sie nicht funktioniert, überprüfen Sie, ob sich eine .editorconfigDatei in Ihrem Projektordner befindet.

Beispielsweise generiert die Angular-CLI eines mit einem neuen Projekt, das so aussieht

# 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

Das Ändern des indent_sizeHier ist erforderlich, da es anscheinend alles in Ihrem .vscodeArbeitsbereich oder in den Benutzereinstellungen überschreibt .

Seangwright
quelle
5
Ich musste VSCode neu starten, damit die Änderung in der IDE wirksam wurde.
JOpuckman
3
In meinem Fall wurde es tatsächlich durch die .editorconfigDatei in meinem Home-Ordner verursacht. Irgendwie ignoriert VSCode alle arbeitsbereichsspezifischen Einstellungen. Sehr nervig.
xji
18

Wenn Sie ein Plugin verwenden (in meinem Fall Vetur für vue.js), können diese ihre eigenen Einstellungen für die Tab-Formatierung festlegen.

Öffnen Sie Ihre Einstellungen, suchen Sie nach "Format" und sehen Sie sich die relevanten Plugin-Einstellungen an, die möglicherweise das globale Registerkartenformat überschreiben. Das hat bei mir funktioniert; Nachdem ich die Einstellungen der Registerkarte "Vetur" entsprechend meinen Einstellungen aktualisiert hatte (in meinem Fall Registerkarten in 4 Größen), funktionierte die Formatierung von .vue-Dokumenten ordnungsgemäß:

Geben Sie hier die Bildbeschreibung ein

Ciabaros
quelle
Das stimmt, in meinem Fall musste ich die Registerkartengröße auch in den Einstellungen der Prettier-Erweiterung festlegen.
Tonix
Es ist erwähnenswert, dass das SCSS FormatterPlugin beispielsweise seine eigenen Einstellungen verwendet. Sie müssen also zu gehen Settings > Extensions > SCSS Formatter > Use Tabs, um die Verwendung von Registerkarten zu erzwingen.
SmartyP
13

Für mich wurde dieses Problem durch die Verwendung des prettierVSCode-Plugins verursacht, ohne dass sich eine schönere Konfigurationsdatei im Arbeitsbereich befand.

Das Deaktivieren des Plugins hat das Problem behoben. Es könnte wahrscheinlich auch behoben worden sein, indem man sich auf die schönere Konfiguration verlassen hat.

Aufmerksamkeit
quelle
1
Für mich war es das "Beautify" Plugin.
Matthew Smith
Ich hatte das gleiche Problem mit "Clang-Format" und der Konfigurationsdatei ".clang-Format".
repkap11
6

Höchstwahrscheinlich ist eine Formatierungserweiterung installiert, z. B. JS-CSS-HTML Formatter .

Wenn dies der Fall ist, öffnen Sie einfach die Befehlspalette, geben Sie "Formatierer" ein und wählen Sie Formatter Config. Bearbeiten Sie dann den Wert von "indent_size"nach Ihren Wünschen.

PS Vergessen Sie nicht, Visual Studio Code nach der Bearbeitung neu zu starten :)

Albert Timashev
quelle
6

Die folgenden Einstellungen haben mein Problem behoben

  "editor.detectIndentation": false,
  "editor.insertSpaces": false,
  "editor.tabSize": 2,
rashidnk
quelle
Es funktioniert, wenn Sie nur mit Dateien mit 2 Leerzeichen arbeiten!
Dominux
2

Wenn Sie von Google hierher gekommen sind, weil der Tab nicht eingerückt ist, kann dies auch daran liegen, dass "Tab Moves Focus" aktiviert ist. Es befindet sich unten rechts. Wenn Sie einen ausreichend großen Monitor haben, können Sie ihn möglicherweise übersehen, obwohl er hervorgehoben ist.

Geben Sie hier die Bildbeschreibung ein

Klicken Sie auf den grünen Bereich oder Strg + M, um ihn anzuhalten. Ich bin mir nicht sicher, ob es vollständig deaktiviert werden kann, aber ich weiß auch nicht, warum ein Code-Editor mit so etwas wie Einrücken herumspielen möchte.

StingyJack
quelle
2

Ich hatte ein ähnliches Problem - egal was ich tat, ich konnte die Tabsize nicht auf 2 bringen, obwohl es in meinen Benutzereinstellungen ist -, das letztendlich auf die EditorConfig-Erweiterung zurückzuführen war . Es sucht nach einer .editorconfigDatei in Ihrem aktuellen Arbeitsverzeichnis. Wenn es keine findet (oder die gefundene nicht angibt root=true), sucht es weiter in übergeordneten Verzeichnissen, bis es eine findet.

Es stellte sich heraus, dass ich ein .editorconfigVerzeichnis in einem übergeordneten Verzeichnis des Verzeichnisses hatte, in das ich alle meine neuen Codeprojekte eingefügt habe, und es gab eine tabSize von 4 an. Das Löschen dieser Datei behebt mein Problem.

bantic
quelle
1

Ich habe manchmal das gleiche Problem. VSCode wird plötzlich den Verstand verlieren und alle Einrückungseinstellungen, die ich ihm sage, vollständig ignorieren, obwohl die gleiche Datei den ganzen Tag gut eingerückt wurde.

Ich habe editor.tabSizeauf 2 gesetzt (sowie editor.formatOnSaveauf wahr gesetzt). Wenn VSCode eine Datei durcheinander bringt, verwende ich die Optionen am unteren Rand des Editors, um den Einzugstyp und die Einrückungsgröße zu ändern, in der Hoffnung, dass etwas funktioniert, aber VSCode besteht darauf, tatsächlich eine Einrückungsgröße von 4 zu verwenden.

Die Reparatur? Starten Sie VSCode neu. Es sollte mit dem Einrückungsstatus zurückkommen, der etwas Falsches anzeigt (in meinem Fall 4). Für mich musste ich die Einstellung ändern und dann speichern, damit die Änderung tatsächlich vorgenommen wurde, aber das liegt wahrscheinlich an meiner editor.formatOnSaveEinstellung.

Ich habe nicht herausgefunden, warum es passiert, aber für mich ist es normalerweise, wenn ich ein verschachteltes Objekt in einer JS-Datei bearbeite. Es wird plötzlich sehr seltsame Einrückungen innerhalb des Objekts machen, obwohl ich eine Weile in dieser Datei gearbeitet habe und es gut eingedrückt ist.

MrOBrian
quelle
0

Das VSCode-Plugin Vetur; Die Verwendung für VueJS-Anwendungen hat die Einstellung für mich überschrieben.

Wenn Sie vetur.format.options.tabSize auf meine bevorzugte Anzahl von Leerzeichen einstellen, funktioniert dies.

Swoot
quelle
0

Ich denke, vscode verwendet standardmäßig autopep8 zum Formatieren .py.

"PEP 8 - Style Guide für Python Code | Python.org"

Laut dieser Website kann im Folgenden erklärt werden, warum vscode immer 4 Leerzeichen verwendet.

Verwenden Sie 4 Leerzeichen pro Einrückungsstufe.

Choi
quelle
-1

Deaktiviere alle Plugins (aktiviere sie dann einzeln und überprüfe sie)

fider
quelle