【问题标题】:Bash prompt line wrapping issueBash提示换行问题
【发布时间】:2013-09-01 14:34:06
【问题描述】:

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

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

【问题讨论】:

标签: macos bash command-prompt ps1


【解决方案1】:

我认为您使用 [ 和 ] 对您的转义码进行了双引号。试试这个:

export PS1="$RESET\u@\h:$CYAN\w$YELLOW\$(__git_ps1)$NORMAL \$ "

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-11
        • 2012-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-30
        • 2015-09-18
        • 1970-01-01
        相关资源
        最近更新 更多