Durch die Verwendung von Kommentaren in JSON-Konfigurationsdateien in Sublime Text können JSON-Objekte nicht dekodiert werden. Hier ist meine Geschichte.Warum erlaubt Sublime Text 3 Kommentare in JSON-Konfigurationsdateien?
Ich habe SublimeREPL Plugin in meinem Sublime Text 3 neu installiert. Bald stellte ich fest, dass Python2.7 statt 3.5 standardmäßig ausgeführt wurde. Daher fügte ich eigene Python3.5-Konfigurationsdateien entsprechend hinzu, um Python3.5 zu unterstützen.
Meine Packages/SublimeREPL/config/Python3.5/Main.sublime-menu
JSON-Konfigurationsdatei sieht wie folgt aus:
[
{
"id": "tools",
"children":
[{
"caption": "SublimeREPL",
"mnemonic": "R",
"id": "SublimeREPL",
"children":
[
{"caption": "Python3.5",
"id": "Python3.5",
"children":[
{"command": "repl_open",
"caption": "Python3.5",
"id": "repl_python3.5",
"mnemonic": "P",
"args": {
"type": "subprocess",
"encoding": "utf8",
"cmd": ["python3", "-i", "-u"],
"cwd": "$file_path",
"syntax": "Packages/Python/Python.tmLanguage",
"external_id": "python3",
"extend_env": {"PYTHONIOENCODING": "utf-8"}
}
},
// run files
{"command": "repl_open",
"caption": "Python3.5 - RUN current file",
"id": "repl_python3.5_run",
"mnemonic": "R",
"args": {
"type": "subprocess",
"encoding": "utf8",
"cmd": ["python3", "-u", "$file_basename"],
"cwd": "$file_path",
"syntax": "Packages/Python/Python.tmLanguage",
"external_id": "python3",
"extend_env": {"PYTHONIOENCODING": "utf-8"}
}
}
]}
]
}]
}]
Hinweis gibt ein Kommentar // ausführen, um Dateien in dieser Datei. Diese Konfiguration funktioniert gut aus der Menüleiste Werkzeuge-> SublimeREPL-> Python3.5. Allerdings, wenn ich versuche, die Taste F5, um mit repl_python3.5_run zu binden, einem leichteren Zugang zu 3,5 zu haben, wurde die folgende Ausnahme in der Konsole geworfen:
Traceback (most recent call last):
File "./python3.3/json/decoder.py", line 367, in raw_decode
StopIteration
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/sublime_text/sublime_plugin.py", line 551, in run_
return self.run(**args)
File "/home/ubuntu/.config/sublime-text-3/Packages/SublimeREPL/run_existing_command.py", line 32, in run
json_cmd = self._find_cmd(id, path)
File "/home/ubuntu/.config/sublime-text-3/Packages/SublimeREPL/run_existing_command.py", line 41, in _find_cmd
return self._find_cmd_in_file(id, file)
File "/home/ubuntu/.config/sublime-text-3/Packages/SublimeREPL/run_existing_command.py", line 53, in _find_cmd_in_file
data = json.loads(bytes)
File "./python3.3/json/__init__.py", line 316, in loads
File "./python3.3/json/decoder.py", line 351, in decode
File "./python3.3/json/decoder.py", line 369, in raw_decode
ValueError: No JSON object could be decoded
Nachdem ich die // lief Dateien Kommentar entfernt. Die F5-Taste funktioniert einwandfrei. Es ist genau der Kommentar, der das Problem verursacht. Sublime Text verwendet JSON als Konfigurationsdateien, viele Konfigurationsdateien kommen mit // style Kommentaren. Wie wir wissen, werden Kommentare von JSON per Design entfernt.
Dann, wie kann erhabener Text Kommentare in Konfigurationsdateien erlauben, ist es mit einer Pipe? Wenn ja, wie kann meine Schlüsselanbindung fehlschlagen?
** P LEASE NICHT TEXT als Bilder **. Kopieren Sie den Text und fügen Sie ihn in Ihre Frage ein. Bilder sind nicht durchsuchbar und können von Bildschirmlesegeräten nicht für Personen mit Sehbehinderungen interpretiert werden. Verwenden Sie den Link [Bearbeiten], um Ihre Frage zu ändern. Weitere Informationen finden Sie unter [this] (http://meta.stackoverflow.com/a/285557/1426065). – MattDMo
Sie haben Recht.Ich habe meinen Fehler bereits korrigiert.Vielen Dank, dass Sie darauf hingewiesen haben. @ MattDMo – Naomi