【问题标题】:Is it possible to set MYSQL_PS1 with colors without messing up prompt line width calculation?是否可以使用颜色设置 MYSQL_PS1 而不会弄乱提示线宽计算?
【发布时间】:2021-01-21 19:41:16
【问题描述】:

考虑MySQL_PS1 的以下设置:

GREEN="$(echo -e '\033[01;32m')"
BLUE="$(echo -e '\033[01;34m')"
RESET="$(echo -e '\033[00m')"
export MYSQL_PS1="${GREEN}STAGING-\\d${BLUE} >${RESET} "

当我启动mysql 并键入一个比可视行长度更长的命令时,它会换行而不换行,覆盖行首。

我尝试了这里提到的here \[ \] 技巧。

export MYSQL_PS1="\[${GREEN}\]STAGING-\\d\[${BLUE}\] >\[${RESET}\] "

不幸的是,它产生了这个提示,而不是从行长中正确排除转义字符。

] >\[\]  >[\] ]   >\[\] ]STAGING-\d\[\] >\[\] STAGING-messenger[\] >\[\]

有没有办法在MYSQL_PS1 中设置颜色而不会弄乱估计的行长?

【问题讨论】:

    标签: mysql prompt ansi-escape


    【解决方案1】:

    我在this comment找到了答案,我会在这里转发。

    正确的咒语是用\001\002包围转义序列。

    GREEN="$(echo -e '\001\033[01;32m\002')"
    BLUE="$(echo -e '\001\033[01;34m\002')"
    RESET="$(echo -e '\001\033[00m\002')"
    export MYSQL_PS1="${GREEN}STAGING-\\d${BLUE} >${RESET} "
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      • 2016-06-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多