
我想我有一個錯誤,例如這個問題。我的提示是
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中。