zsh是否支持RBUFFER显示颜色?如何实现RBUFFER着色
zsh中给RBUFFER添加颜色的解决方法
zsh支持给RBUFFER添加颜色,你遇到的问题是因为直接赋值时转义序列未被解析:
你定义的redCircle里的\e是字面量的\+e,而非实际的ESC控制字符。echo在zsh中默认会解析转义序列(相当于自带-e选项),所以能正常显示颜色;但RBUFFER是直接存储原始字符的,不会自动解析转义,导致颜色失效。
解决方法有三种:
用ANSI-C风格引号定义变量
用$''包裹字符串,zsh会自动解析其中的转义序列,将\e转换成ESC字符:local redCircle=$'\e[0;31m● \e[0m' RBUFFER="$redCircle"用参数展开标志强制解析转义
使用${(e)var}语法,让zsh解析变量内的转义序列:local redCircle='\e[0;31m● \e[0m' RBUFFER="${(e)redCircle}"通过print命令直接写入RBUFFER
用print -n(-n表示不换行)将解析后的带颜色字符直接赋值给RBUFFER:RBUFFER=$(print -n '\e[0;31m● \e[0m')
以上三种方法都能让RBUFFER正确显示红色圆点。
内容的提问来源于stack exchange,提问作者Ali
相关产品推荐
相关产品推荐

