忽略 PS1 的“对粗体文本使用明亮的颜色”设置

忽略 PS1 的“对粗体文本使用明亮的颜色”设置

我在 Mac 上使用 iTerm2。有一个设置称为Draw bold text in bright colors;此设置的问题在于它也会影响我的PS1文本。有没有办法解决除此之外的所有问题PS1

如果重要的话,这就是我的样子:

declare __host='\[\e[30;102m\] \h \[\e[0m\]';
declare __dir='\[\e[1;97;44m\] \w \[\e[22m\]';
declare __arrow='\[\e[1m\]▸ \[\e[0m\]';

function __git_status() {
  local info;
  info=$(__git_info) && printf '\1\e[30;43m\2%s' "$info";
}

PS1="$__host$__dir"'$(__git_status)'"$__arrow ";

颜色__arrow来自 或__dir__git_status启用该设置后,箭头的颜色会发生变化,因为它是粗体的。

答案1

简而言之:不,PS1 使用与“其他所有内容”相同的转义序列

长的:

您可以关闭箭头中的粗体:

declare __arrow='\[\e[22m\]▸ \[\e[0m\]';

实际上,由于__dir将其关闭,这是多余的(除非$(git_status)有一些转义序列)。

22关掉大胆的不影响其他视频属性,并且定义在ECMA-48(以及其他地方,例如XTerm 控制序列):

            Ps = 2 2  -> Normal (neither bold nor faint).

相关内容