zsh 终端的长行换行问题

zsh 终端的长行换行问题

我的终端有一个长绕行问题。谁能帮我修改提示环境变量来解决这个问题?这是我的提示环境变量:

function parse_git_branch() {
    git branch 2> /dev/null | sed -n -e 's/^\* \(.*\)/[\1]/p'
}

COLOR_DEF=$'\e[0m'
COLOR_USR=$'\e[38;5;243m'
COLOR_DIR=$'\e[38;5;197m'
COLOR_GIT=$'\e[38;5;39m'
setopt PROMPT_SUBST
export PROMPT='${COLOR_USR}%n${COLOR_DIR}@%m ${COLOR_GIT} %1d$(parse_git_branch)${COLOR_DEF}$'

我的问题在这里描述https://github.com/vercel/hyper/issues/1566

答案1

您需要告诉 zsh 这 11 个字符/字节实际上$'\e[38;5;243m'不占用空间,宽度为零,因此行编辑器可以判断何时到达屏幕的右端。

在 中zsh,与在 中一样tcsh,这是通过将它们括在 中%{...%},对于所有其他转义序列相同:

PROMPT=$'%{\e[38;5;243m%}'

您还可以用来%5{weird stuff%}告诉 zsh 里面的内容的显示宽度为 5 列。info zsh 'prompt expansion'详情请参阅。

不过,在这里,您宁愿使用%F{243}告诉zsh使用前景色 243,而不是自己对这些转义序列进行硬编码。

相关内容