http://stackoverflow.com/ques...
这段代码写得不错,如果要补全第二个参数要自己写 complete 函数类似于下面的代码。
def complete_cd(self, *args):
cwd = CURRENT_PATH
results = [c for c in os.listdir(cwd) if c.startswith(args[0][0])]
return results
ps:官方文档有说:
Note The underlying Readline library API may be implemented by the libedit library instead of GNU readline. On MacOS X the readline module detects which library is being used at run time.
The configuration file for libedit is different from that of GNU readline. If you programmatically load configuration strings you can check for the text “libedit” in readline.__doc__ to differentiate between GNU readline and libedit.
所以在 MAC 和 Windows 上面不适用
如果要在全平台使用(没有测试 Windows),使用如下加载代码
try:
import readline
except ImportError:
try:
import pyreadline as readline
# throw open a browser if we fail both readline and pyreadline
except ImportError:
import webbrowser
webbrowser.open("http://ipython.scipy.org/moin/PyReadline/Intro#line-36")
# throw open a browser
#pass
else:
import rlcompleter
if(sys.platform == 'darwin'):
readline.parse_and_bind ("bind ^I rl_complete")
else:
readline.parse_and_bind("tab: complete")