【发布时间】:2020-03-20 18:10:31
【问题描述】:
我在 Zsh 中有一个自定义提示。最后,我将最后一个字符涂成红色或绿色,具体取决于最后一个命令是成功还是失败。但是,当我这样做时,我无法返回并编辑以前的命令。
这是提示代码:
%{%F%(?.$fg[green].$fg[red])>%f%}
工作流程示例:
- 我输入一个换行的命令:
> printf "%s\n" "This is a very long printf. How long is it? It's so very very long that it wraps onto the next line."
- 运行后,我按向上箭头并通过删除并重新键入“is it”来修改命令。现在,命令行显示:
> printf "%s\n" "This is a very long printf. How long is it It's so very very long that it wraps onto the next line."
- 打印出来:
This is a very long printf. How long iis it It's so very very long that it wraps onto the next line.
我假设我没有以某种方式终止颜色代码,以便提示溢出到我尝试输入的实际命令中。只有当提示换行到新行时才会出现异常。谁能看到我的提示有什么问题?
我已经验证,如果没有这个 sn-p 代码,提示的其余部分都可以正常工作,并且可以按照您的预期运行。
【问题讨论】:
-
fg数组中到底有什么?确切地知道你如何改变颜色会让我清理我的答案。