11

新手问题,我最近把我的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 来解释这个问题:

在此处输入图像描述

有什么想法可能是错的吗?

4

3 回答 3

5

我认为你用 [ 和 ] 双引号你的转义码。试试这个:

export PS1="$RESET\u@\h:$CYAN\w$YELLOW\$(__git_ps1)$NORMAL \$ "
于 2013-09-01T17:21:03.003 回答
2

只要非打印字符未转义(例如更改提示颜色的转义码),就会发生换行错误。当语言环境设置为不理解 unicode 字符并且提示包含它们时,也会发生这种情况。一个例子是不间断的空格。当区域设置为“C”并且提示中有 unicode 字符时,shell 认为正在打印的字符比实际打印的字符多,并且提示过早地环绕。

于 2019-04-19T18:17:39.143 回答
0

shopt -s checkwinsize这应该可以解决您的问题。这将设置变量checkwinsize on。这是在 /etc/bashrc 中默认设置的,但是由于您使用的是自定义 .bashrc 文件,因此您可以将此代码放在那里或在您的 .bashrc 文件中通过. /etc/bashrc在 .bashrc 文件的顶部添加来加载 /etc/bashrc .

于 2021-07-07T21:26:55.223 回答