В оболочке Python буква "b" не работает, что? - PullRequest
15 голосов
/ 19 августа 2011

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

В оболочке 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, который может быть проблемой.
Использование этого:

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

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

ОБНОВЛЕНИЕ :

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

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

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

Ответы [ 2 ]

12 голосов
/ 02 января 2012

Проблемная строка в вашем .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")
8 голосов
/ 19 августа 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...