2015-07-12 13 views
7

Oto jak ukończenie zakładka pracuje dla mnie:ukończenie Tab w ipython dla elementów listy

In [84]: a="string" 

In [85]: b = ["str", "ing"] 

ukończenie Tab ciągów pracuje tutaj: Zakończenie

In [86]: a. 
a.capitalize a.decode  a.expandtabs a.index  a.isdigit  a.istitle  a.ljust  a.partition a.rindex  a.rsplit  a.splitlines a.swapcase a.upper  
a.center  a.encode  a.find  a.isalnum  a.islower  a.isupper  a.lower  a.replace  a.rjust  a.rstrip  a.startswith a.title  a.zfill  
a.count  a.endswith a.format  a.isalpha  a.isspace  a.join  a.lstrip  a.rfind  a.rpartition a.split  a.strip  a.translate 

Tab na listach pracuje tutaj:

In [86]: b. 
b.append b.count b.extend b.index b.insert b.pop  b.remove b.reverse b.sort  

ukończenie Tab ciągów nie pracuje tutaj:

In [87]: b[0]. 

Jedną z możliwości obejścia:

In [88]: c = b[0] 

In [89]: c. 
c.capitalize c.decode  c.expandtabs c.index  c.isdigit  c.istitle  c.ljust  c.partition c.rindex  c.rsplit  c.splitlines c.swapcase c.upper  
c.center  c.encode  c.find  c.isalnum  c.islower  c.isupper  c.lower  c.replace  c.rjust  c.rstrip  c.startswith c.title  c.zfill  
c.count  c.endswith c.format  c.isalpha  c.isspace  c.join  c.lstrip  c.rfind  c.rpartition c.split  c.strip  c.translate 

Czy można używać bez zakończenia wspomnianego obejścia? Mam podobne zachowanie w ipdb, czy jest możliwe naprawienie tego zachowania również tam? Używam ipythoon v3.1.0 i ipdb v 0.8. Dzięki

Odpowiedz

5

tworzyć ipython profilu:

ipython profile create testing 

w ipython_config.py un-skomentować ten wiersz

# Activate greedy completion 
# 
# This will enable completion on elements of lists, results of function calls, 
# etc., but can be unsafe because the code is actually evaluated on TAB. 
c.IPCompleter.greedy = True 

obciążenia ipython z tego profilu:

ipython notebook --profile=testing 

Daje TAB uzupełnianie dla członków list oraz kluczy i wartości słownika.


Jeden szybki Alternatywą jest użycie dir() metoda:

dir(b[0]) 

#returns: 

['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'] 

Inną metodą jest użycie Pythona lub ipython interaktywnej konsoli lub regularne redaktor PTVS, który jest w stanie zrobić uzupełnienia (intellisense) na elementach listy.

+0

Tak, ale jest to inny sposób obejścia tego problemu. Podstawowym celem jest użycie klawisza tab. Niektóre konfiguracje, takie jak bash/etc/bash_completion, byłyby w porządku –

+0

najwyraźniej działa to w PTVS IDE – denfromufa

+0

Autocompletowanie języka ipython jest rozważane przy refaktoryzacji za pomocą jedi: https://github.com/ipython/ipython/issues/8606 – denfromufa

Powiązane problemy