在 macOS Catalina 上设置 PS1 会导致调整窗口大小时终端提示自行重叠

在 macOS Catalina 上设置 PS1 会导致调整窗口大小时终端提示自行重叠

我已经在 .bash_profile 中设置了 PS1,虽然颜色有效,但当我调整终端窗口大小时,我会出现糟糕的自动换行和奇怪的线条行为。

这是我的 .bash_profile:

[[ -s ~/.bashrc ]] && source ~/.bashrc

# Setting PATH for Python 2.7
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/TeX/Distributions/Programs/texbin:${PATH}"

shopt -s checkwinsize
export PROMPT_DIRTRIM=3
export PS1='\[\e[0;37m\]\d \D{} \[\e[36m\]\u\[\e[m\]@\[\e[32m\]\h:\[\e[0;31m\]\w\[\e[m\] \$ '
export CLICOLOR=1
# export LSCOLORS=AxcxcxdxBxegedabagahad    # light theme
export LSCOLORS=GxFxCxDxBxegedabagaced  # dark theme
alias ls='ls -GFh'
alias mv='mv -iv'
alias cp='cp -iRv'

是我设置PS1的方式有问题吗?

答案1

要暂时恢复正常终端,可以使用:

kill -28 $$

您必须在提示符中的所有非打印转义序列周围放置 [ 和 ]。因此:

blue=$(tput setaf 4)
purple=$(tput setaf 5)
reset=$(tput sgr0)
export PS1="\[$blue\]\h:\[$purple\]\w\[$reset\]\\$ "

所以停止使用原始的 ansi 代码,它不可读,最好使用tput.

查看 https://mywiki.wooledge.org/BashFAQ/053

相关内容