新手问题,我最近把我的PS1改成了这个:
RESET="\[\017\]"
NORMAL="\[\033[0m\]"
YELLOW="\[\033[0;33m\]"
CYAN="\[\033[0;36m\]"
export PS1="\[$RESET\]\u@\h:\[$CYAN\]\w\[$YELLOW\]\$(__git_ps1)\[$NORMAL\] \$ "
但现在我得到一个换行错误。我创建了一个 gif 来解释这个问题:
有什么想法可能是错的吗?
新手问题,我最近把我的PS1改成了这个:
RESET="\[\017\]"
NORMAL="\[\033[0m\]"
YELLOW="\[\033[0;33m\]"
CYAN="\[\033[0;36m\]"
export PS1="\[$RESET\]\u@\h:\[$CYAN\]\w\[$YELLOW\]\$(__git_ps1)\[$NORMAL\] \$ "
但现在我得到一个换行错误。我创建了一个 gif 来解释这个问题:
有什么想法可能是错的吗?
我认为你用 [ 和 ] 双引号你的转义码。试试这个:
export PS1="$RESET\u@\h:$CYAN\w$YELLOW\$(__git_ps1)$NORMAL \$ "
只要非打印字符未转义(例如更改提示颜色的转义码),就会发生换行错误。当语言环境设置为不理解 unicode 字符并且提示包含它们时,也会发生这种情况。一个例子是不间断的空格。当区域设置为“C”并且提示中有 unicode 字符时,shell 认为正在打印的字符比实际打印的字符多,并且提示过早地环绕。
shopt -s checkwinsize
这应该可以解决您的问题。这将设置变量checkwinsize on
。这是在 /etc/bashrc 中默认设置的,但是由于您使用的是自定义 .bashrc 文件,因此您可以将此代码放在那里或在您的 .bashrc 文件中通过. /etc/bashrc
在 .bashrc 文件的顶部添加来加载 /etc/bashrc .