你好编码员和勇敢的GNU-readline用户,
几个月前,我开始使用
Python的(2.7.1)readline模块来编写我编写的类似shell的应用程序.该应用程序与文件和文件系统无关 – 它是专有管理软件的定制解决方案.
昨天我发现特定文本会导致意外的自动完成行为,并且在documentation中找不到解决此问题的方法.我在这里拼命地寻求你的帮助.我将从一个示例开始,然后使用一个代码片段来重现不需要的行为.
提供自动完成的值是:
aaa0 aaa1 aaa2 bbb_0 bbb_1 bbb_2
ccc-0 ccc-1 ccc-2 ddd?0 ddd?1 ddd?2
…然后意外行为如下(每个动作后跟结果输出,管道符号代表光标):
>输入’b’.
输入> C |
>按TAB键(在我的配置中绑定到自动完成操作).
输入> bbb_ |
>再次按TAB键.您的文字将保持不变,但您会收到以下提示:
bbb_0 bbb_1 bbb_2
输入> bbb_ |
>键入“0”并按Tab键.
bbb_0 bbb_1 bbb_2
输入> bbb_0 |
注意’0’字符和光标之间的空格(下面的代码片段将解释这一点).
到目前为止一直这么好,并尝试使用’a’将导致类似的输出,只有没有下划线(aaa0,aaa1,aaa2).
>重新开始并输入’c’.
输入> C
>按TAB键.
输入> CCC-
>再次按TAB键.
aaa0 aaa1 aaa2 bbb_0 bbb_1 bbb_2 ccc-0 ccc-1 ccc-2 ddd?0 ddd