【问题标题】:Backspace erasing bash prompt only after typing characters仅在键入字符后退格擦除 bash 提示
【发布时间】:2017-02-21 05:46:19
【问题描述】:

这里是新的 linux 用户。

我的 bash 提示符如下所示:

export PS1=$"\[\e[1;32m\d \t \e[1;33mฅ^\e[m\e[1;36mᵒ\e[m\e[1;33mﻌ\e[m\e[1;36mᵒ\e[m\e[1;33m^ฅ \e[1;35m\W\e[1;32m$\]"

(这是一只小猫ฅ^ᵒﻌᵒ^ฅ

现在我已将] 添加到字符串的末尾,当提示为空时,它不再删除我的 bash 提示字符。但是,一旦我开始输入命令然后按退格键,它就会删除我的 bash 提示符。

有没有办法防止这种情况发生,或者这只是一个 bash 的事情?

谢谢!

【问题讨论】:

    标签: linux bash unix redhat prompt


    【解决方案1】:

    \[...\] 表示包含的部分不占用提示中的任何空间。因此,它们将用于 xterm 控制序列(\e[1;32m 等),而不是提示文本(\d\t 等)。尝试类似:

    PS1='\[\e[1;32m\]\d \t\[\e[1;33m\]ฅ^\[\e[m\e[1;36m\]ᵒ\[\e[m\e[1;33m\]ﻌ\[\e[m\e[1;36m\]ᵒ\[\e[m\e[1;33m\]^ฅ\[\e[1;35m\]\W\[\e[1;32m$\]'
    

    如果您的整个提示都包含在 \[...\] 中,那么 bash 会认为您的提示完全不占空间,并且从行首开始输入。

    (顺便说一句,你不需要导出PS1。)

    【讨论】:

    • 比我的+1更好的解释
    • 这很好用。感谢您为我解决这个问题!
    猜你喜欢
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多