编辑 .bashrc 后,我的提示符中出现了幽灵

编辑 .bashrc 后,我的提示符中出现了幽灵

我将以下内容添加到我的~/.bashrc

export PS1="\e[0;35m[\u@\h \W]\$ \e[m "
echo -e "\e[0;35mYOU ARE ON THE LIVE SERVER !!\e[0m"

可悲的是,现在,每次我将长的东西粘贴到 bash 中时,它都会变得湿漉漉的,幽灵tab字符出现在屏幕上,并且线条互相吞噬,有人知道为什么吗?

答案1

我过去也遇到过 ANSI 颜色代码与命令行导航混淆的问题;您需要放置 ANSI 代码,\[ \]以便命令 shell 知道如何(不)将它们作为输入字符串的一部分考虑在内。

如:

export PS1="\[\e[0;35m\][\u@\h \W]\$\[\e[m\] "
echo -e "\[\e[0;35m\]YOU ARE ON THE LIVE SERVER !!\[\e[0m\]"

关于为什么 shell 需要\[和 的一些解释\]:为了在终端字符矩阵中的正确位置绘制提示符,shell 需要知道提示字符串的正确长度,即提示字符串的长度。可打印字符,即不是控制字符或字符序列。

但是,shell 不知道终端认为哪些字符序列可打印。因此,需要向 shell 提供提示以区分可打印序列和不可打印序列,这就是\[和的目的\]

答案2

我已经修复了这个问题我使用了这个网站http://bashrcgenerator.com/并以手动方式完成,它更长,但如果你双击元素,你可以给它们着色,它确实有效

我最终得到

   export PS1="\[\033[38;5;129m\][\u@\h\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\[\033[38;5;129m\]~]\\$\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]"

相关内容