我想我得到了一个错误这个问题.我的提示是
PROMPT=$'\n%F{cyan}================================%f\n[%*] [%F{yellow}%?%f]\n[%F{cyan}%n@%m%f]\n[%F{green}%~%f]'
例如,我运行了:
================================
[2022-08-23 14:02:43] [0]
[jyxjjj@DESMG-MacBookPro]
[~]$ php media app:build
当我按下键盘上的向上箭头,然后按下向下箭头时,它将显示:
================================
[2022-08-23 14:02:43] [0]
[jyxjjj@DESMG-MacBookPro]
[~]$ php media app:buphp media app:build
我确信我没有给出错误的样本。它只是显示为
php media app:buphp media app:build
并正确运行为:
php media app:build
也。
这意味着无论我看到什么,它都会运行正确的命令。
所以这只是一个显示错误。
然后我测试了所有方法,只有删除 PS1/PROMPT 导出才能修复此错误。
所以我认为我的 PS1 导致了这个错误。
如何修复?
我不明白这个问题。
所以我想再问一次。
我很抱歉。
附加:
我的 zshrc 的某些部分:
autoload -U colors && colors
setopt histignoredups
setopt histignorealldups
setopt appendhistory
setopt sharehistory
setopt promptsubst
然后:
$ echo $PS1
%F{cyan}================================%f
[%*] [%F{yellow}%?%f]
[%F{cyan}%n@%m%f]
[%F{green}%~%f]$(__git_ps1)$
$ echo $PROMPT
%F{cyan}================================%f
[%*] [%F{yellow}%?%f]
[%F{cyan}%n@%m%f]
[%F{green}%~%f]$(__git_ps1)$
$ echo $PROMPT_COMMAND
(nothing)
$ which PROMPT_COMMAND
PROMPT_COMMAND not found
$ which prompt_command
prompt_command not found
我测试过
PROMPT=$'\[\n\]\[%F{cyan}\]================================\[%f\n\][\[%*\]] [\[%F{yellow}\]%?\[%f\]]\n[\[%F{cyan}\]%n@%m\[%f\]]\n[\[%F{green}\]%~\[%f\]]'
并打印了[
和]
我测试过
PS1='\n\[\e[36m\]================================\[\e[0m\]\n[\t] [\[\e[36m\]\u@\h\[\e[0m\]]\n[\[\e[32m\]\w\[\e[0m\]]'
在 bash 中它可以工作。
答案1
我自己找到了答案:
来自 zsh 手册,提示扩展,简单提示转义,第 13.2.5 节——视觉效果。
%{...%}
包含一个字符串作为文字转义序列。括号内的字符串不应改变光标位置。[…]
我的代码缺少这些%{
和%}
。它们似乎是 zsh 的对应项\[
在\]
bash 中。