dan*_*n_g 5 zsh prompt colors command-prompt
我正在尝试使用转义字符创建一个简单的提示来定义提示组件的颜色:
PROMPT=$'\e[0;35m%n\e[0m \e[0;92m%~\e[0m \e[0;97m$ \e[0m'
Run Code Online (Sandbox Code Playgroud)
这工作正常,除了一件事 - 当我去选项卡完成时,我的光标(以及要完成的相关命令)向右移动。
一点谷歌搜索把我带到这里:https : //github.com/robbyrussell/oh-my-zsh/issues/23
将提示格式更改为类似:
PROMPT='%{$fg[green]%}%n%'
Run Code Online (Sandbox Code Playgroud)
解决问题。但是,与使用转义字符和上面显示的颜色代码相比,绿色、品红色、蓝色等颜色选项在您可以选择的颜色方面受到更多限制。
我无法弄清楚如何格式化上面显示的第一个提示,以便选项卡完成问题消失。关于 %{ 的位置,我尝试了一些不同的排列,但它们最终都破坏了提示字符串。
格式化这个的正确方法是什么?或者,有没有办法使用该$fg[COLOR]方案访问比红色、蓝色、洋红色等更多的颜色?
您可以将%{...放在%}转义字符周围。
%{...%}包括一个字符串作为文字转义序列。大括号内的字符串不应更改光标位置。
所以,下面简化的错误情况,
PROMPT=$'\e[0;35m%n\e[0m '
Run Code Online (Sandbox Code Playgroud)
可能
PROMPT=$'%{\e[0;35m%}%n%{\e[0m%} '
Run Code Online (Sandbox Code Playgroud)
以及为什么PROMPT='%{$fg[green]%}%n%'有效,因为$fg[green]产生的转义序列被正确包裹在%{...%}.