Невозможно использовать вкладку в оболочке Python

Используя вкладку в Python 3.4, я получаю следующее сообщение:

Display all 184 possibilites? (y or n)

Есть ли способ разрешить табуляцию в Python 3.4?

Ответ 1

Это изменение, внесенное в версии разработки Python 3.4. Это было несколько противоречиво. Возможно, вы захотите высказать свое мнение .

Ответ 2

Вместо табуляции вы можете использовать пробелы. А в интерактивном интерпретаторе вам не нужно вводить 4 пробела. Здесь я использую два пробела, чтобы свести к минимуму количество нажатий клавиш.

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

Чтобы отключить tab: complete, вы можете сделать следующее.

Создайте или отредактируйте файл в домашнем каталоге под названием .pythonrc
В файле добавьте следующие строки и сохраните

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

Измените файл ~/.bashrc и добавьте следующую строку

export PYTHONSTARTUP=$HOME/.pythonrc

Запустите интерпретатор python3. Tab должен работать так, как он использовался.

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

Ответ 3

Чтобы отредактировать это поведение без необходимости устанавливать переменные среды для всей учетной записи, вы можете выполнить инициализацию в ~/.local/lib/python3.4/site-packages/usercustomize.py. Как писал @HaleemurAli, код для отключения табуляции:

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

Ответ 4

Это должно быть исправлено (вернулось) в более поздних версиях 3.4 и 3.5, и, предположительно, все будущие версии в обозримом будущем.

http://bugs.python.org/issue23441#msg247482

Ответ 5

Итак, как мне это сделать в Windows? Это большая боль в шее.

На самом деле простым решением было получить отличный бесплатный программный программист на клавиатуре и установить его в файл .ahk; ')

вкладка:: Отправить {пробел} {пробел} {пробел} {пробел}

(Ваш редактор не показывает, что Send *** находится во второй строке.)