В оболочке 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
. Я переименовал его папку, и он работал нормально. Через пару часов я подробно рассмотрю, что именно вызывает проблему, и опубликуйте ее здесь с подробными результатами.
Ответы
Ответ 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")