PS1 定义是否仍需要非打印字符转义字符?

PS1 定义是否仍需要非打印字符转义字符?

在修改我的 PS1 定义时,我发现应该添加“\[”和“\]”标记以帮助 bash 计算正确的显示长度。网上的许多示例都没有使用它们,甚至没有提到它们。

我搜索了一种自动添加它们的解决方案,就像使用 sed 一样,但我没有找到任何示例。

它们仍然需要吗?是否有建议不要使用 sed 来定义 PS1?

这是我目前使用的:

PS1="$(echo -n "$PS_" | sed -e 's/\\e\[/\\\[\\e\[/g' -e 's/[0-9]m/&\\\]/g')"

答案1

是的,\[而且\]仍然是需要的,否则当命令比你的终端窗口宽时,你会遇到难看的故障。

相关内容