如何在我的bash提示符中正确使用双字符宽的emoji? [英] How can I properly use two-character-width emoji in my bash prompt?

查看:0
本文介绍了如何在我的bash提示符中正确使用双字符宽的emoji?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在我的bash提示符(即PS1环境变量)中使用美国国旗表情符号。然而,美国国旗表情符号会导致终端光标向右偏移一个额外的字符。

🇺🇸由两个unicode字符组成:🇺和🇸。我相信终端正在将其转换为单间距表情字符(旗帜),但仍为两个字符分配空间。如何实现预期的光标位置?

我想:
🇺🇸 Desktop akirna 🗽 ls|

我收到:
🇺🇸 Desktop akirna 🗽 ls |<;<;光标前奇怪的空格偏移量

我的~/.bash_profile是:

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的原因,请参阅Charles Duffy对此答案的评论。)

上面的示例将提示符设置为字符X、Y、[空格]、[退格符]、[冒号],结果显示的提示符只有"xy:"。

在我的系统上,该标志被呈现为两个字符(🇺和🇸),因此我无法验证这一点,但我认为添加一个退格符(X08)应该对您有效:

PS1=$'🇺🇸  \W \u 🗽x08'

有关编辑的说明

我最初的回答建议使用子外壳,如下所示:

export PS1=$(printf "XY x08")

非常感谢Charles Duffy的投入~

这篇关于如何在我的bash提示符中正确使用双字符宽的emoji?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆