2013-08-21 6 views
0

Я попытался найти этот ответ, и либо не имеют правильное сочетание слов, или просто найти не могу, но я прошу прощения, если это повторить:Python Tab Завершение Пейджер

Когда в питона интерпретатор (запуск python [3] из командной строки, т. е. не IPython или что-то еще), как мне заставить интерпретатор «на странице» завершить мои вкладки, если на одном экране слишком много?

Например, если я

import os 
os.<tab> 

на некоторых компьютерах, она заполнит экран с столбчатым выводом всех зева. * Опция, а нижняя линия «Больше» (как будто я бежал «больше» или «меньше» на выходе, так сказать), и я просматриваю страницу с помощью Enter или пробела. В моей текущей ОС, однако, он просто выплевывает все возможности, которые требуют от меня прокрутки, чтобы увидеть все.

Есть ли простая функция, которую я должен был включить, скажем, в мой .pythonstartup, который бы облегчил это? Всё, что у меня есть, есть сейчас:

import readline 
readline.parse_and_bind("tab: complete") 

, которого, очевидно, недостаточно, чтобы получить то, что я хочу; Я получаю вкладку, но не выгружаемый вывод.

ответ

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') 
+0

Хм, у меня возникают некоторые проблемы при получении, что работать - сейчас, это просто дает мне пустой экран (что мне нужно «д», чтобы выйти из, так что я думаю, что «меньше» часть рабочий?) ... – dwanderson

+0

Попробуйте без 'колонки'. какую версию python вы используете? – mata

+0

Это была проблема python3; теперь он работает даже с колонкой. Большое спасибо, это была одна из тех мелочей, которые сводили меня с ума. – dwanderson