退格擦除 bash 仅在输入字符后提示
Backspace erasing bash prompt only after typing characters
这里有新 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 的事情?
谢谢!
\[...\]
表示包含的部分不占用提示中的任何space。因此,它们将用于 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 认为您的提示根本不需要 space,并且从行首开始输入。
(顺便说一句,您不需要导出 PS1
。)
这里有新 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 的事情?
谢谢!
\[...\]
表示包含的部分不占用提示中的任何space。因此,它们将用于 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 认为您的提示根本不需要 space,并且从行首开始输入。
(顺便说一句,您不需要导出 PS1
。)