Подтвердить что ты не робот

В оболочке python письмо "b" не работает, что?

Хорошо, привет, это самая интересная ошибка/конфликт, с которым я когда-либо сталкивался.

В оболочке python я не могу ввести строчный "b" . Сначала я думал, что что-то под ключом, но нет, во всем остальном он функционирует очень хорошо. Также работает ctrl+b shift+b даже с capslock b.

Тем не менее, когда я запускаю оболочку с sudo (т.е. sudo python), мой маленький строчный "b" работает хорошо.

Мой последний шаг заключался в установке pyexiv2 (с использованием aptitude), я могу без проблем импортировать его с помощью и без sudo. Я удалил его, но результат не изменился.

Что, черт возьми, может быть неправильно?

Я использую Ubuntu 10.04 LTS x86 с Python 2.6.5

Примечание:
Я установил модификатор vim script, который может быть проблемой.
Используя это:

$ git clone https://github.com/sontek/dotfiles.git
$ cd dotfiles
$ ./install.sh vim

Эти скрипты инициируют больше git клонов, поэтому может быть трудно следовать. Но он делает множество изменений, включая внешний вид терминала.

UPDATE

1) Я даже не могу скопировать/вставить символ "b" . ctrl+c/v select&middle click оба не работают.

2) Когда я открываю оболочку с помощью python -E, модификаторы из упомянутого так называемого vim script не отображаются. И b работает хорошо. Когда я открываю его с помощью python или python -S, существуют модификации, и я не могу ввести b.

3) Хорошие новости: мне удалось найти ошибку, это так называемый vim script. Я переименовал его папку, и он работал нормально. Через пару часов я подробно рассмотрю, что именно вызывает проблему, и опубликуйте ее здесь с подробными результатами.

4b9b3361

Ответ 1

Мои деньги - это то, что readline на вашей оболочке запутан. Возможно, ключ "b" привязан к автозаполнению. Посмотрите в свою переменную PYTHONSTARTUP и посмотрите, к какому файлу она относится. Если этот файл имеет что-то вроде readline.parse_and_bind...

Я уверен, что существует какая-то связь между тем фактом, что это "b" (вместо какой-то другой буквы) и слово "bind", например, переменная, называемая bind_to_complete, и она интерпретируется буквально (и только первая принятый символ).

Пусть начинается массовое угадание дикой оспы!

Ответ 2

Проблемная строка в .pythonstartup выглядит примерно так:

 readline.parse_and_bind("bind ^I rl_complete") # darwin libedit

Этот .pythonstartup исправит его...

try:
    import readline
except ImportError:
    print "Module readline not available."
else:
    import rlcompleter
    if 'libedit' in readline.__doc__:
        readline.parse_and_bind("bind ^I rl_complete")
    else:
        readline.parse_and_bind("tab: complete")