rightprompt() {
green=$(tput setaf 156)
yellow=$(tput setaf 228)
red=$(tput setaf 203)
printf "%*s" $COLUMNS "${green}$(date +%a), ${yellow}$(date +%b\ %d), ${red}$(date +%H:%M)"
}
PS1='\[$(tput sc; rightprompt; tput rc)\]╭─\[\e[1;33m\]\u\[\e[31m\]@\[\e[32m\]\h\[\e[m\] in \[\e[1;36m\]\w\n╰─\[\e[35m\]\[\e[m\] '
上面的代码在我的.bashrc
。我使用 Archlinux x86_64 和 alacritty 终端仿真器。
此代码导致右侧提示从终端边缘向左移动。显示此移动的屏幕截图:
提供其他图像以供参考(每个后续图像均删除了一种颜色): 何时{red}
删除:
不添加颜色时不会发生偏移,因此这些颜色变量就是问题所在。每个变量都会tput setaf
以某种方式干扰$COLUMNS
或%*s
以某种方式干扰,我不知道该怎么办。