我已经尝试过搜索这个答案,要么没有正确的单词组合,要么根本找不到,但如果重复,我道歉:
当在python解释器中(从命令行运行python [3],即不是IPython或任何东西)时,如果在一个屏幕上有太多不适合的话,如何让解释器“页面”我的选项卡完成?
例如,如果我
import os
os.<tab>
在某些计算机上,它会用所有操作系统选项的柱状输出填充屏幕,底线为“更多”(好像我在输出上运行'更多'或'更少',所以到说,)我用Enter或空格键翻页。然而,在我目前的操作系统上,它只是吐出所有可能性,这需要我向上滚动以查看所有内容。
是否有一个简单的函数,我应该包含在我的.pythonstartup中,这样可以减轻这个问题?我现在所拥有的只有:
import readline
readline.parse_and_bind("tab: complete")
这显然不足以得到我想要的东西;我得到标签完成,但没有分页输出。
答案 0 :(得分:1)
使用readline.set_completion_display_matches_hook设置显示功能。
这是一个快速而肮脏的示例,它只是通过column
管理所有匹配项,以便在列中对其进行格式化并使用less
进行显示。
import readline
import subprocess
import rlcompleter
def display_matches(substitutions, matches, longest_match_length):
m = '\n'.join(matches) + '\n'
proc = subprocess.Popen('column | less', shell=True, stdin=subprocess.PIPE)
# python2:
proc.communicate(m)
# python3:
# proc.communicate(m.encode('utf-8'))
readline.set_completion_display_matches_hook(display_matches)
readline.parse_and_bind('tab: complete')