终端现在内置了更改ANSI颜色的支持,这真是太好了,但我发现它会自动调整颜色以提高对比度,这很令人讨厌,这意味着我实际选择的颜色经常以其他方式被洗掉或淡化。 。这是说明问题的屏幕截图:
这让我感到困扰,因为我喜欢在Terminal和MacVim中使用相同的配色方案,并且通过Terminal对颜色进行这种处理,它们与MacVim中的颜色不匹配。
除了切换到iTerm 2(我不希望–我喜欢Terminal的其余部分,尤其是一些GUI触动,如脉动的可视铃声)外,还有谁知道解决方案吗?谢谢!
终端现在内置了更改ANSI颜色的支持,这真是太好了,但我发现它会自动调整颜色以提高对比度,这很令人讨厌,这意味着我实际选择的颜色经常以其他方式被洗掉或淡化。 。这是说明问题的屏幕截图:
这让我感到困扰,因为我喜欢在Terminal和MacVim中使用相同的配色方案,并且通过Terminal对颜色进行这种处理,它们与MacVim中的颜色不匹配。
除了切换到iTerm 2(我不希望–我喜欢Terminal的其余部分,尤其是一些GUI触动,如脉动的可视铃声)外,还有谁知道解决方案吗?谢谢!
Answers:
这是您需要知道的窍门:通过RGB设置的值会被弄乱,而通过HSB设置的值则不会。
我不得不使用(大)了类似的问题Solarized配色方案:必须的MacVim较暗(正确)的背景颜色比终端,即使我将所有按照Solarized规范正确的RGB值。看这里:
基本上你需要知道你的颜色值都应该是每个终端ANSI,文本和背景的(注意,这是一个窗口选项卡上)的颜色,然后通过HSB选择器,而不是RGB设置。请参阅以下示例:
不管出于什么原因(我怀疑是某种类型的配置文件,或者是您建议的对比度调整),输入的RGB颜色都不是您得到的。您还将注意到,一旦通过HSB设置了值,切换到RGB选择器将显示与您期望的选项不同的选项。Solarized值转换均根据Photoshop同意;这似乎是Apple颜色选择器正在为您做的事情。
颜色配置文件绝对重要,但是这里还潜伏着另一个问题:Terminal.app在默认背景上显示时会自动使任何颜色变亮。例如,此处是Terminal.app输出的运行Solarized颜色主题的颜色,该颜色由DigitalColor Meter在sRGB模式下测量,并与标准的Solarized sRGB值进行了比较。
当在黑色(或任何其他颜色)背景上显示时,Terminal.app会产生大约正确的颜色。但是,在默认背景下,除默认和默认粗体文本外的所有颜色都太亮了。
简而言之:不,没有支持的方法可以禁用此功能。
当在终端背景颜色上显示ANSI(或扩展的256色表)颜色时,或在ANSI背景颜色上显示终端前景/文本颜色时,终端会自动应用最小对比度。
这是为了方便起见,因此可以设置背景或前景色,并使它们与ANSI颜色形成对比,而不必调整所有ANSI颜色。这在Terminal的早期版本中尤其重要,后者缺少用于自定义ANSI颜色的首选项支持。
较旧的Terminal版本对所有颜色组合都应用了最小对比度,但这意味着例如ANSI的红色对红色文本可能可读,但是某些程序故意将文本显示为具有相同的前景色和背景色以便将其隐藏(例如,用于显示游戏提示或笑话趣味)。因此,当在一种ANSI颜色上显示另一种ANSI颜色时,较新版本的Terminal不会应用最小对比度。
现在,终端机不仅仅解决同色情况,还避免了对所有ANSI颜色组合应用最小对比度,因为假定如果用户自定义任何ANSI颜色,他们将自定义所有ANSI颜色以相互对比。还假定这些用户将调整或考虑终端背景和前景色以适合其所需的配色方案。
如果使用其他答案中所建议的使用具有不同颜色空间的颜色的解决方法行得通,则可能是依赖于颜色处理代码中的一个错误,该错误应该适用于任何颜色,并且将来可能会停止工作当该错误修复时。
如果能够显式禁用或调整最小对比度行为对您很重要,我建议通过使用任何Apple ID 在https://developer.apple.com/bug-reporting/上提交报告来告知Apple 。