在python shell中,“b”字母不起作用,是什么?

时间:2011-08-19 15:39:09

标签: python shell

嗨,你好,这是我遇到的最有趣的错误/冲突。

在python shell中,我不能输入小写的“b”。起初我觉得有些东西在关键之下,但不是,在其他任何地方它都能很好地发挥作用。 ctrl+b shift+b即使capslock b也有效。

然而,当我使用sudo(即sudo python)运行shell时,我的小写“b”效果很好。

我的最后一步是安装pyexiv2(使用aptitude),我可以在有和没有sudo的情况下导入它而没​​有问题。我删除了它,但结果没有改变。

到底怎么可能是错的?

我将Ubuntu 10.04 LTS x86Python 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打开shell时,所提到的所谓的 vim script中的修饰符不会出现。 b运作良好。当我使用pythonpython -S打开它时,修改存在,我无法输入b

3 好消息:我设法找到了错误,它是所谓的 vim script。我已重命名其文件夹,它工作正常。几个小时后,我将深入研究究竟是什么导致问题,并在此处发布详细结果。

2 个答案:

答案 0 :(得分:12)

.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")

答案 1 :(得分:8)

我的钱是你的shell上的readline搞砸了。也许'b'键必然会自动完成。查看PYTHONSTARTUP变量并查看它所引用的文件。如果该文件类似于readline.parse_and_bind ...

我认为它是'b'(而不是其他一些字母)和'bind'这个词之间存在某种联系,就像有一个名为bind_to_complete的变量并且它被字面解释(并且只是第一个角色。)

让群众疯狂猜测开始!