我想在 bash 提示符(即 PS1 环境变量)中使用美国国旗表情符号。但是,美国国旗表情符号会导致终端光标向右偏移一个额外的字符。
???????? 由两个 unicode 字符 ???? 和 ???? 组成。我相信终端正在将其转换为等宽表情符号字符(标志),但仍然为两个字符分配空间。如何达到预期的光标位置?
I want:
???????? Desktop akirna ???? ls|
I get:
???????? Desktop akirna ???? ls |
光标前奇怪的空格偏移
My ~/.bash_profile
is:
export PS1='???????? \W \u ???? '
更新答案
您设置提示的方式不是评估转义字符。在字符串前添加 $ 以使其计算转义码:
pompt$ export PS1='XY \x08: '
XY \x08: echo "Well that didn't work..."
应该变成:
pompt$ export PS1=$'XY \x08: '
XY: echo "Escape code success!"
(请参阅查尔斯·达菲对此答案的评论,了解我删除的原因export
.)
上面的示例将提示设置为字符 X、Y、[空格]、[退格]、[冒号],从而导致仅显示“XY:”提示。
在我的系统上,该标志呈现为两个字符(????和????),因此我无法验证这一点,但我认为添加退格键(\x08)应该适合您:
PS1=$'???????? \\W \\u ????\x08'
关于编辑的注释
我原来的答案建议使用子 shell,如下所示:
export PS1=$(printf "XY \x08")
非常感谢 Charles Duffy 的投入~
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)