pycharm konvertiert Tabulatoren automatisch in Leerzeichen


110

Ich verwende die Pycharm-IDE für die Python-Entwicklung. Sie funktioniert einwandfrei für Django-Code. Daher wird vermutet, dass das Konvertieren von Tabs in Leerzeichen das Standardverhalten ist. In Python gibt die IDE jedoch überall Fehler aus, da Tabs nicht automatisch in Leerzeichen konvertiert werden können Dies.

Antworten:


124

Ändern Sie den Codestil so, dass Leerzeichen anstelle von Tabulatoren verwendet werden:

Räume

Wählen Sie dann in der Projektansicht einen Ordner aus, den Sie konvertieren möchten, und verwenden Sie Code| Code neu formatieren .


30
Dies war meine Standardeinstellung, aber es scheint, dass es einen Fehler in der IDE gab, der nicht funktionierte. Ich habe also Bearbeiten> Einzug konvertieren> Leerzeichen
Vaibhav Mishra

1
Python sollte einen 4-Leerzeichen-Einzug haben.
Josh

2
Diese Antwort funktioniert bei mir nicht. Ich bin mir nicht sicher, warum es akzeptiert wird, da es auch für OP nicht funktioniert. Folgefrage
Stefan Monov

3
In meinem Fall musste ich die Editor-Konfiguration unter Editor -> Codestil -> Editor-Konfigurationsunterstützung aktivieren deaktivieren, da ich unwissentlich eine ~/.editorconfigDatei hatte, die die Einstellungen von PyCharm überschrieb.
Warlike Schimpanse

1
Sie können die Verwendung von Leerzeichen auch für vorhandene Dateien erzwingen, indem Sie unter "Allgemeiner Codestil" das Kontrollkästchen "Vorhandene Dateieinzüge erkennen und zum Bearbeiten verwenden" deaktivieren. Wenn Sie danach eine Registerkarte in eine vorhandene Datei eingeben, werden sofort Leerzeichen anstelle von Tabulatoren eingefügt.
David Kinghorn

64

Für Auswahlen können Sie die Auswahl auch mit der Funktion "In Leerzeichen" konvertieren. Normalerweise benutze ich es einfach über Strg-Umschalt-A und finde dann "To Spaces" von dort.


scheint nicht für mehrere Dateien gleichzeitig zu funktionieren. es für jede Datei einzeln zu tun ist eine Art Ärger ...
CGFoX

Sie, Sir, sind ein Lebensgenuss
Juggernaut

61

Dadurch werden nur die Registerkarten konvertiert, ohne dass etwas anderes geändert wird:

Edit -> Convert Indents -> To Spaces

1
Hey, das sollte akzeptiert werden. Es funktioniert lokal. ZB nützlich für Makefile, die Tab als Einrückung haben müssen
swdev

9

Strg + Umschalt + A => Popup-Fenster öffnen, um Optionen auszuwählen , Leerzeichen auswählen , um alle Tabulatoren als Leerzeichen zu konvertieren, oder Tabulatoren , um alle Leerzeichen als Tabulatoren zu konvertieren.


Registerkarte als Registerkarte konvertieren? ist es ein Tippfehler?
Anvesh Yalamarthy

7

PyCharm 2019.1

Wenn Sie die allgemeinen Einstellungen ändern möchten:

Öffnen Sie Präferenzen, in macOS ;oder in Windows / Linux Ctrl+ Alt+ S.

Gehen Sie zu Editor -> Codestil -> Python. Wenn Sie PEP-8 folgen möchten, wählen Sie Tabulatorgröße: 4 , Einzug: 4 und Fortsetzungseinzug: 8 wie unten gezeigt:

Geben Sie hier die Bildbeschreibung ein

Übernehmen Sie die Änderungen und klicken Sie auf OK.

Wenn Sie die Änderungen nur auf die aktuelle Datei anwenden möchten

Option 1: In der Navigationsleiste können Sie wählen: Bearbeiten -> Einzug konvertieren -> In Leerzeichen. (siehe Bild unten)

Geben Sie hier die Bildbeschreibung ein

Option 2: Sie können die Aktion "Zu Räumen" ausführen, indem Sie die Verknüpfung "Aktion suchen" ausführen : Aunter macOS oder ctrlAunter Windows / Linux. Geben Sie dann "To Spaces" ein und führen Sie die Aktion wie in der Abbildung unten gezeigt aus.

Geben Sie hier die Bildbeschreibung ein


1

Strg + Alt + Umschalt + L -> ganze Datei neu formatieren :)


to tabs funktionierte nicht, um einen vorhandenen Codeblock zu konvertieren. Dies ist die einzige Lösung, die für mich funktioniert hat. Vielen Dank!
Jed

0

Für mich hatte es eine Datei namens ~ / .editorconfig, die meine Registerkarteneinstellungen überschrieb. Ich habe das entfernt (sicherlich wird mich das eines Tages wieder beißen), aber es hat mein Pycharmproblem behoben

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.