You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义Bash提示符中箭头符号被截断的问题求助

自定义Bash提示符中箭头符号被截断的问题求助

大家好,我现在碰到个Bash提示符的小麻烦,想请教下有没有解决办法。

我目前在用一个自定义的Bash提示符,这个命令是之前某个问题的解决方案,具体代码是这样的:

PS1=$'\e[1;33m\\t \e[36m\u\e[34m@\e[36m\h\e[;1m: \e[34m\w\n \[\b\e[;1;31m✘\] ${?/#0/\[\b\b\e[32m✓ \]}${?/#[1-9]*/  }\[\b→\e[;1m\]  \$: \[\e[m\]'

当命令执行成功(退出码0)和失败(退出码非0)时,提示符里的箭头总是会被截断——虽然不影响使用,但看着特别别扭。我试过换了好几种等宽字体,结果都有截断的情况,只是程度不一样,直到我试了DejaVu Sans Mono字体,箭头才完全正常显示。

其实最开始我用的是另一个版本的提示符配置,用PROMPT_COMMAND来动态生成,代码如下:

set_PS1()
{
local Exit_Code="$?"
local Reset="\\[$(tput sgr0 )\\]"
local Bold="\\[$(tput bold )\\]"
local Red="\\[$(tput setaf 1 )\\]"
local Green="\\[$(tput setaf 2 )\\]"
local Yellow="\\[$(tput setaf 3 )\\]"
local Blue="\\[$(tput setaf 4 )\\]"
local MagentaBG="\\[$(tput setab 5 )\\]"
local Cyan="\\[$(tput setaf 6 )\\]"
local Whoami='\u'
local Where='\w'
local Hostname='\h'
local Time='\D{%H:%M:%S}'

# Emoji are multi-byte, but shells think 1 byte = 1 character
# We add a 1-character space, then enable color-code mode to ignore
# the upcoming emoji, then backspace to draw the emoji on top of the space.
local emoji_start=$' \\[\b'
local emoji_end=$'\\]'

if (($Exit_Code == 0 )); then
local exit_code_prompt="$Green$emoji_start"$'\xE2\x9C\x93'"$emoji_end $emoji_start"$'\xE2\x86\x92'"$emoji_end" # Green checkmark symbol
else
local exit_code_prompt="$Red$emoji_start"$'\xE2\x9C\x98'"$emoji_end $Exit_Code $emoji_start"$'\xE2\x86\x92'"$emoji_end" # Red cross mark symbol and exit code
fi

local Line_1="$Bold$Yellow$Time $Cyan$Whoami$Blue@$Cyan$Hostname$Reset$Bold":" $Blue$Where$Reset"
local Line_2="$Bold$exit_code_prompt $Reset$Bold \\$: $Reset"
#local Line_2="$Bold \$: $Reset"
PS1="$Line_1\\n$Line_2"
}

# We need to expand exit_code_prompt BEFORE PS1 prompt string expansion (see shopt promptvars in man bash)
# so we need to move it to PROMPT_COMMAND which runs earlier.
PROMPT_COMMAND=set_PS1

这个版本里箭头显示完全正常,但有个致命问题:当我进入Python虚拟环境(venv)之后,箭头就不显示了,这对我来说完全没法用,所以只好换成现在这个短版本,但箭头截断的问题又回来了。

有没有办法既能解决箭头截断的问题,又能保证在Python虚拟环境里箭头正常显示呢?麻烦大家帮我想想办法!

备注:内容来源于stack exchange,提问作者reneas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 08:35:29