Bash 有时使用箭头键时提示会改变
Bash prompt changes when using arrow keys sometimes
当我使用我的终端 (iTerm 2 Mac) 并将我的 PS1 设置为 "\[\e[38;5;117m\W \e[39;38;5;104m$\e[39;0m\] "
并且我使用箭头键浏览我的 bash 历史记录时有时会将我的提示从 ~ $
更改为它的第一个字符以及我正在查看的任何命令。例如,从 randomDir $ ls
转到 rvim .bashrc
。此问题也存在于默认终端应用程序中。
\W
和 $
不应进入 \[...\]
,因为 bash
会知道每个 space 在终端上占用了多少。
PS1="\[\e[38;5;117m<b>\]</b>\W <b>\[</b>\e[39;38;5;104m<b>\]</b>$<b>\[</b>\e[39;0m\] "
只有组成ANSI转义序列的字符(只指示终端改变颜色,不显示任何额外的字符)在\[...\]
中.
将它们放在 \[...\]
中会告诉 bash
忽略它们对提示长度的贡献,从而导致不正确的重绘。
当我使用我的终端 (iTerm 2 Mac) 并将我的 PS1 设置为 "\[\e[38;5;117m\W \e[39;38;5;104m$\e[39;0m\] "
并且我使用箭头键浏览我的 bash 历史记录时有时会将我的提示从 ~ $
更改为它的第一个字符以及我正在查看的任何命令。例如,从 randomDir $ ls
转到 rvim .bashrc
。此问题也存在于默认终端应用程序中。
\W
和 $
不应进入 \[...\]
,因为 bash
会知道每个 space 在终端上占用了多少。
PS1="\[\e[38;5;117m<b>\]</b>\W <b>\[</b>\e[39;38;5;104m<b>\]</b>$<b>\[</b>\e[39;0m\] "
只有组成ANSI转义序列的字符(只指示终端改变颜色,不显示任何额外的字符)在\[...\]
中.
将它们放在 \[...\]
中会告诉 bash
忽略它们对提示长度的贡献,从而导致不正确的重绘。