2016-04-29 10 views
2

Ich verwende erhabenen Text 3 für Python-Entwicklung. Ich habe Autovervollständigung aktiviert, während ich tippe, was funktioniert. Ich erwarte, dass wenn ich einen Objektnamen gefolgt von einem Punkt eintippe, eine Liste der Methoden/Attribute des Objekts erscheint. Es passiert nicht, also drücke ich Tab.Ärgerliche sublime Text Autovervollständigung für Python nach Zeitraum (`self` Schlüsselwort)

import time 
time.[TAB] 

Was jetzt passiert, ist einfach total komisch! . durch self. ersetzt wird, so dass ich am Ende mit

import time 
timeself. 

Ich war in allen Einstell-Dateien suchen, habe ich versucht, Pakete python completions, code intel und code complice, aber keiner von ihnen deaktiviert dieses „Feature“, die mich verrückt macht!

Schließlich habe ich Jedi Paket gefunden, das dieses Problem für den Texteditor gelöst hat. Aber ich habe immer noch Probleme im Interpreter-Fenster (Paket SublimeREPL). By the way, wenn ich sowohl Jedi und code complice installieren, scheint die automatische Vervollständigung in der REPL besser zu funktionieren, aber es bietet einige irrelevante Mist wie %%! oder %%HTML. Und ja, wenn ich zweimal [TAB] drücke, lande ich immer noch mit timeself. anstelle von time.!

Weiß jemand, was los ist? Woher kommt das . ->self. Verhalten? Wie kann man %%! Sachen deaktivieren?

Antwort

3

Ich hatte dieses Problem selbst, und es war nicht leicht zu finden.

Das Problem wird nicht von einem Paket verursacht. Ich habe herausgefunden, nach dem Ausführen von Standard von Sublime Text 3. Während ich Anaconda (wie von MattDMo erwähnt), kann das Problem auch auftreten, wenn Anaconda installiert ist.

Das Problem:

Die Ursache des Problems ist Python der Standard mit Sublime Text ausgeliefert Schnipsel 3 self.sublime-snippet und sieht wie folgt genannt:

kann
<snippet> 
    <content><![CDATA[self.]]></content> 
    <tabTrigger>.</tabTrigger> 
    <scope>source.python</scope> 
    <description>self</description> 
</snippet> 

In Sublime Text 2, diese Datei einfach entfernt werden, aber die Standard-Snippets in ST3 werden nicht auf die gleiche Weise gespeichert, daher gibt es keine Möglichkeit, diese Datei einfach zu löschen.

Die Lösung:

This stack overflow answer erklärt, wie die Paketinformationen für eine Sprache zu extrahieren, in diesem Fall Python. Das Snippet kann dann wie gewohnt gelöscht werden.

Update:

Das Snippet jetzt im Quellcode entfernt wurde, um dieses Problem zurückzuführen. Wahrscheinlich im nächsten Update enthalten. Quelle: https://github.com/sublimehq/Packages/issues/473

+1

Vielen Dank! Ich habe PackageResourceViewer benutzt, um das zu finden, dann habe ich 'self.' mit' .' in der zweiten Zeile des snipped ersetzt. Jetzt erscheint die Autovervollständigung auf der Tab-Taste, aber das lästige "Selbst" -Wort wird nicht eingefügt! –

+0

Perfekt! Froh, zu hören :) Sie können auch die gesamte 'self-limite-snippet'-Datei löschen, wenn Sie möchten, damit der Tooltip keine Option zum Auswählen dieses Snippets anzeigt. –

+0

Aus irgendeinem Grund stoppt Autocompletion zu arbeiten, wenn ich einfach das abgeschnittene lösche - also habe ich es dort gelassen, aber geändert. –

3

Ich würde sehr empfehlen, Ihre anderen Abschluss-Pakete loszuwerden und installieren Sie Anaconda (keine Beziehung zu der Anaconda Python-Distribution). Ich benutze es jetzt seit ein paar Jahren, und ich liebe es absolut. Im Grunde müssen Sie nur einen Pfad für "python_interpreter" in den Einstellungen von Anaconda oder in den Einstellungen project bereitstellen, und es funktioniert einfach. Es dauert nicht lange, um alles wie SublimeCodeIntel zu indizieren, und es ist nicht nötig, einen separaten Linter einzurichten, weil mehrere Linters eingebaut sind. Virtualenvs sind nahtlos. Anaconda wird alle Module sehen, die für die von "python_interpreter" angegebene Python-Version verfügbar sind, sodass Sie keine zusätzlichen Pfade zur Umgebung durch Einstellungen hinzufügen müssen. Stellen Sie sicher, dass Sie alle Standardeinstellungsdateien in die Benutzereinstellungsdatei kopieren, und ändern Sie dann die Optionen nach Bedarf. Projektspezifische Einstellungen haben Vorrang vor den Benutzereinstellungen. Sie können sie also noch mehr anpassen, indem Sie Ihr Projekt bearbeiten.

BTW, ich bin in keiner Weise mit dem Projekt verbunden, außer für eine kleine Pull-Anfrage oder zwei, ich bin nur ein sehr zufriedener Benutzer.

+0

Anaconda ist wunderbar! Klappt wunderbar! Vielen Dank für diesen Hinweis! –

+0

@RKiselev kein Problem. Verbreite das Wort! – MattDMo

+0

@MattDMo: Gibt es einen Grund, meine Antwort zu bearbeiten? Bei dem Satz, den du entfernt hast, ging es nicht um Reputationspunkte, sondern darum, andere Leute mit dem gleichen Problem die Lösung des Problems zu finden! Derzeit beantwortet Ihre Antwort die Frage überhaupt nicht. –