[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: bash prompt光标定位错误



Yunfeng Wang wrote:
> 在 06-4-10,高超<achaoge@163.com> 写道:
>   
>> Yunfeng Wang wrote:
>>     
>>> 唉,发到水木上被大水淹了,到这儿向xd们讨教一下,看能解决不
>>>
>>> 使用\[ \]将PS1中的非打印字符串(如\e[0m之类)包裹起来,会在特定情况下
>>> 出现光标定位错误
>>>
>>> $PS1='$'
>>> $echo -n abc         # 输出abc后不换行
>>> abc$
>>>     ^                # ^所指处为光标位置,正确
>>>                        # web上看因字体的缘故可能没对齐,term下是正确的
>>> $PS1='\[\e[0m\]$'
>>> $echo -n abc
>>> $bc$
>>>  ^                   # 光标定位错误
>>> $PS1='\[\e[0m\]123$'
>>> 123$echo -n abc
>>> abc123$
>>>        ^             # 正确
>>>
>>> 总结起来,如果\[ \]包裹的字符数(\e只算一个字符)超过其余的正常字符数,
>>> 就会出现光标定位错误,表现为在正常输出字符串abc以及$PS1后光标退回行首
>>> 并再次输出$PS1,从而将先前的输出部分覆盖
>>>
>>> $ echo $BASH_VERSION
>>> 3.1.11(1)-release
>>>
>>>       
>> 重复了一下你的过程,没有重现你说的问题
>> $echo $BASH_VERSION
>> 3.00.16(1)-release
>>     
> 嗯,我试了一下bash v3.0,的确没有问题,那么看来是3.1的问题喽?
> 麻烦xd也测试一下3.1,做个确认
>   
Etch: 确实存在问题
echo $BASH_VERSION
3.1.5(1)-release




Reply to: