Ich weiß, dass diese Frage oft gestellt wurde, aber ich finde keine Lösung für mein Problem, hauptsächlich, weil ich das Problem nicht einmal wirklich identifizieren kann.
Hier ist die Zeitleiste der Ereignisse:
- öffne alte python datei (geschrieben mit python2.7) - alles ist in ordnung
- Ändern Sie die Tastenkombinationen, um .py-Dateien mit python3 anstelle von python2.7 auszuführen - wie erwartet, viele
IndentError
s, aber die Datei hat immer noch die gleiche Struktur / das gleiche Layout / die gleiche Anzahl von Leerzeichen / Tabulatoren expandtab
zu meiner .vimrc-Datei hinzugefügt - jetzt gibt es keine Probleme mehrIndentError
mit Inkonsistenzen, sondernIndentError
überall neue, da die Struktur meines Quellcodes jetzt völlig durcheinander ist.- Ich entferne
expandtab
aus meiner .vimrc und bekomme immer noch das Gleiche aus der Quelle heraus, auch wenn ich die Sitzung töte, ganz iTerm, ziehe die Quelle frisch aus Github ... WARUM !?
Um ganz klar zu sein, es gibt nur ZWEI Dinge, die in meinem Vimrc in den letzten Monaten geändert wurden, und beide Änderungen wurden heute Morgen vorgenommen. Das erste war die Neuzuordnung <F9>
eines Shell-Befehls für python3 anstelle von 2.7, der sich NICHT auf die Struktur meines Quellcodes auswirkte. Die zweite Änderung war das Hinzufügen, expandtab
wodurch alles durcheinander gebracht wurde. Durch das Entfernen expandtab
wird meine VIM-Erfahrung nicht wieder so wie vor dem Hinzufügen.
Die strukturellen Änderungen an meiner Quelle sind halbgleichmäßig. Lassen Sie mich also versuchen, zu erklären, was tatsächlich passiert.
Was früher aussah:
class GUI():
def __init__(self):
suite of code
sieht jetzt so aus:
class GUI():
def __init__(self):
suite of code
und es ist auf der ganzen Linie so für alles, was wie alle verschachtelten Codesuiten aussieht ... mit anderen Worten, die erste Erweiterung von Tabulatoren in 4 Leerzeichen funktioniert einwandfrei, aber anstatt Tabulatoren zu erweitern, die weiter innerhalb des ersten Tabulators verschachtelt sind, sieht es so aus löscht stattdessen nur die Registerkarte.
Es sind noch andere seltsame Dinge im Gange, aber ich kann ein Muster nicht wirklich erkennen.
Irgendwelche Ideen, was los ist?
tabstop=8
da ich die gleiche .vimrc (with tabstop=4
) hatte, bevor ich Python überhaupt kannte.
tabstop=8
, ich kann die einzelnen Tabulatoren in den 8-stelligen Einzügen auswählen. Und Python im gemischten Einrückungsmodus behandelt Tabulatoren als acht Leerzeichen. Ich weiß nicht, wie Ihre vim-Konfiguration funktioniert hat, um es vorher zu zeigen.
tabstop=4
stattdessen mit geschrieben worden wäre ? edit: oder soll ich einfach tabstop
wieder auf 8 wechseln ?
%s/\t/(eight spaces)/g
. Sie sollten keine Tabulatoren im Python-Code haben.
tabstop
8 geschrieben wurde. Vim wird entweder angezeigt oder erweitert, mit der Annahme, dasstabstop=4
. Haben Sie die Originalquelle von, bevor Sie die Dateien mit den falschen VIM-Einstellungen bearbeitet haben?