我应该先说这个终端会话是通过 ssh 从 Windows PuTTY 到 Linux OpenSSH。我不确定这是否重要,但我想我还是应该说出来。
目前,当我在终端中写的内容超过一行时,文本从同一行而不是新行开始,并导致我的提示从这里开始:
trevor@SEARS-SERVER:~$
Run Code Online (Sandbox Code Playgroud)
对此(当然是示例文本):
ne lineSEARS-SERVER:~$ this is the text line that is too long to fit on o
Run Code Online (Sandbox Code Playgroud)
目前我的 PS1 是在我的 .bashrc 中设置的:
export PS1="\n[$(date +%r)] \e]0;\e[0;32m\u\e[m@\e[38;5;52m\h\e[m:\e[38;5;240m\w\e[m\e[97m$\e[m"
Run Code Online (Sandbox Code Playgroud)
此外,当窗口低于一定宽度时,会发生这种情况:
m$ :32:40 PM] trevor@SEARS-SERVER:~
Run Code Online (Sandbox Code Playgroud)
我知道这与我的 PS1 配置或 PuTTY 有关,但我不知道是哪个,或者为什么/如何。有什么帮助吗?
问题是你的提示:
export PS1="\n[$(date +%r)] \e]0;\e[0;32m\u\e[m@\e[38;5;52m\h\e[m:\e[38;5;240m\w\e[m\e[97m$\e[m"
Run Code Online (Sandbox Code Playgroud)
要使 bash 忽略转义序列(非打印),您必须用\[和将它们括起来\]。
否则,bash 会将它们计为屏幕上提示长度的一部分,并且对终端何时自动换行到下一行感到困惑。
这样的事情会有所帮助:
export PS1="\n[$(date +%r)] \[\e]0;\e[0;32m\]\u\[\e[m\]@\[\e[38;5;52m\]\h\[\e[m\]:\[\e[38;5;240m\]\w\[\e[m\e[97m\]$\[\e[m\]"
Run Code Online (Sandbox Code Playgroud)