2013-11-02 7 views
11

Mit Tab in Python 3.4, ich die folgende Meldung erhalten:nicht verwenden kann Tab in Python Shell

Display all 184 possibilites? (y or n) 

Gibt es eine Möglichkeit 3.4 in Python Tabbing zu erlauben?

+0

Sie sehen die Verwendung von Tab-Vervollständigung, die unglaublich nützlich ist (in der Regel). Probieren Sie 'import sys; sys.hat dann die Tabulatortaste, und Sie sehen alle Autocomplete-Optionen unterhalb von 'sys'. Sie könnten (und sollten IMO) Leerzeichen anstelle von Tabs für den Einzug verwenden, um das Beste aus beiden Welten zu erhalten. –

+2

@JoshSmeaton Wenn Sie im Terminal scripten, ist die Verwendung von Tabs viel schneller als die Verwendung von Leerzeichen (und zuverlässiger). Ich würde es hassen, 12 Leerzeichen für eine if-Anweisung in einer Methode innerhalb einer Klasse auszuzählen. –

+0

Die neue Empfehlung ist die Verwendung von Leerzeichen, aber einzelne Leerzeichen trennen die Blöcke nicht ausreichend, und 4 Leerzeichen sind zu mühsam, um sie austippen zu können. –

Antwort

12

Dies ist eine Änderung, die in den Entwicklungsversionen von Python 3.4 eingeführt wurde. Es war etwas umstritten. Vielleicht möchten Sie Ihre Meinung äußern on the issue.

11

Anstelle der Tabulatoren können Leerzeichen verwendet werden. Und im interaktiven Interpreter müssen Sie nicht 4 Leerzeichen eingeben. Hier verwende ich zwei Leerzeichen, um die Anzahl der Tastenanschläge zu minimieren.

if 1 == 1: 
    print('Hello Kitty') 
    print('Oh no, only two spaces for a new block') 

Um tab: complete zu deaktivieren, können Sie die folgenden Aktionen aus.

erstellen oder eine Datei auf Ihrem Home-Verzeichnis .pythonrc
In der Datei die folgenden Zeilen und speichern

import readline 
readline.parse_and_bind("set disable-completion on") 
readline.parse_and_bind("tab: self-insert") 

Bearbeiten Sie Ihre ~/.bashrc-Datei und fügen Sie die folgende Zeile

export PYTHONSTARTUP=$HOME/.pythonrc 

starten genannt bearbeiten der python3 Interpreter. Tab sollte funktionieren wie früher.

Oder Sie können die Bindung an einen anderen Schlüssel anstelle eines Tabs abschließen, und Sie erhalten das sprichwörtliche Beste beider Welten.

+0

Arbeitete perfekt. Habe meine Tabulatur zurück bekommen! – kurzweil4

0

Also, wie mache ich das in Windows? Das ist ein großer Schmerz im Nacken.

Eigentlich ist die einfache Lösung war die hervorragenden frei autohotkey Tastatur Programmierer zu bekommen, und setzt diese in der .ahk Datei; ')

Tab :: Senden {Raum} {Raum} {} {Raum Raum }

(Ihr Editor nicht die Tatsache zeigt, dass *** senden ist in der zweiten Zeile.)

+0

Wie macht man in Windows etwas zuverlässig? –

1

um dieses Verhalten zu bearbeiten, ohne Umgebungsvariablen für Ihr gesamtes Konto einstellen zu müssen, können Sie das tun, Initialisierung in ~/.local/lib/python3.4/site-packages/usercustomize.py. Wie @HaleemurAli schrieb, ist der Code Tab-Vervollständigung zu deaktivieren:

import readline 
readline.parse_and_bind("set disable-completion on") 
readline.parse_and_bind("tab: self-insert")