答案1
这是因为提示的打印部分\u
in
\w
和:
位于转义的方括号中。括号通常放在非打印字符周围,告诉 bash 不要为它们移动光标,从而正确计算提示符的大小。所以现在光标没有正确移动到打印部分。
.bashrc
我建议您修改设置提示的部分而不是覆盖它...您可以取消注释(删除#
)此行:
#force_color_prompt=yes
然后修改此代码片段中的第二行:
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
所以它说:
PS1='${debian_chroot:+($debian_chroot)}\[\033[00;34m\]\u \[\033[0;37m\]in \[\033[01;32m\][\[\033[0;31m\]\w\[\033[1;32m\]]\[\033[0;37m\]: '
或者,如果您愿意,只需将覆盖放在文件末尾:
PS1='\[\033[00;34m\]\u \[\033[0;37m\]in \[\033[01;32m\][\[\033[0;31m\]\w\[\033[1;32m\]]\[\033[0;37m\]: '
这实现了我认为你在 Ubuntu 16.04 中想要的东西,并且不会破坏你所描述的方式(我之前在玩 PS1 时也经历过这种情况!)
答案2
方括号的错误使用。
PS1="\[\033[0;34m\]\u \[\033[0;37m\]in \[\033[1;32m\][\[\033[0;31m\]\w\[\033[1;32m\]]\[\033[0;37m\]: "
答案3
是括号把你弄乱了。特别是工作目录开头的一个未转义的“[”。 “[\w”试试这个:
PS1="\033[0;34m\u \033[1;32m\[[\033[0;31m\w\033[1;32m]\033[0;37m: "
它在我的终端中完全符合您的要求。