今天也是收到了macOS 26 Tahoe Beta 3的更新,还没有深入发掘这次更新的细节,最直观的感受是优化了我常用的终端,好的改动是优化了标签栏当前激活标签,对比色更明显了,之前一直不知道看不清自己在哪个标签页,经常切换错误,影响工作流畅性;不好的改动是蓝色加深了,变得不容易分辨。这篇文章就是来解决这个问题的。
我一开始是很不喜欢系统内置的Terminal,也许那个时候它不够好用,因此一直使用iTerm2替代。直到某个版本偶然一次尝试了一下内置的终端,发现这家伙竟然还不错?所以抛弃了iTerm2,又回到了Terminal的怀抱。
如何让终端显示颜色?
在大多数类Unix系统(例如Linux/macOS)之上,ls命令可以通过启用颜色输出来在终端中显示文件和目录的不同颜色。这在区分不同类型的文件(如目录、符号链接、可执行文件等)时非常有用。默认情况下,许多系统是开启了颜色显示的,我用过的发行版中,Debian默认是不开启的。
通常,启用ls
颜色输出是通过创建一个别名来完成的:
alias ls='ls --color=auto'
在Linux上,--color=auto
选项使得ls
命令根据文件类型自动使用颜色。将这一行添加到你的shell配置文件(如~/.bashrc
或~/.bash_profile
),然后运行source ~/.bashrc
(或重启终端)以使其生效。
MacOS上的ls
使用BSD版本,因此你需要使用-G
选项来启用颜色:
alias ls='ls -G'
许多现代终端会在系统配置中自带对ls
颜色支持的启用,可以在没有手动配置的情况下提前利用已有设置。
终端是如何显示颜色的?
终端显示颜色是通过控制字符(通常称为ANSI转译序列)实现的。这些序列是特殊的字符串,可以嵌入到文本中,知道终端如何渲染接下来的文字,包括颜色、背景色和文本样式等。
\033[<code>m
其中,\033
是转义字符(也可以用\e
表示),[
是序列开头,<code>
是一个或多个数字编码,用来定义颜色和样式,m
是序列的结尾。
如何自定义颜色?
LS_COLORS
环境变量用来定义每种文件类型的具体颜色。你可以在Shell配置文件中设置它以自定义颜色。
通过命令echo $LS_COLORS
查看当前终端的颜色配置,可以通过修改这个环境变量设置自定义颜色。例如:
export LS_COLORS='di=1;34:ln=35:so=32:pi=33:ex=31:bd=34;46:cd=34;43:su=30;41:sg=30;46:tw=30;42:ow=30;43'
di=1;34
:目录为蓝色,并加粗ln=35
:符号链接为紫色so=32
:套接字为绿色pi=33
:命名管道为黄色ex=31
:可执行文件为红色bd=34;46
:块设备为蓝色,青色背景cd=34;43
:字符设备为蓝色,黄色背景su=30;41
:设置UID位的文件为黑色,红色背景sg=30;46
:设置GID位的文件为黑色,青色背景tw=30;42
:具有粘滞位但其他用户可写的目录为黑色,绿色背景ow=30;43
:其他用户可写的目录为黑色,黄色背景
颜色代码通常是由两个部分组成:效果和颜色,形式为<效果>;<颜色>
。效果代码可以是特殊效果,也可以是颜色代码,如果是颜色代码则会当作背景色。
以下是特殊效果代码的含义:
0
:重置/默认,关闭所有属性。1
:粗体或增加亮度。2
:暗淡,降低亮度。3
:斜体(并非所有终端都支持)。4
:下划线。5
:闪烁(慢速),并非所有终端都支持。6
:快速闪烁。7
:反显(交换背景和前景色)。8
:隐藏。9
:删除线(并非所有终端都支持)。
调制自己喜欢的配色
至此,我们已经了解了如何让终端显示颜色,以及自定义颜色,接下来就是对Terminal进行优化了。
在使用终端应用的时候,我们并不需要像上面那样修改LS_COLORS
变量,因为终端会帮我们完成这些,我们只需要在终端的设置中,修改描述文件即可。
我这里复制了一份Pro配色方案,在其基础上进行更改。一个是标准的蓝色,一个是明亮(高亮)蓝色。
这是修改之前的默认蓝色:
这是修改之后的蓝色:
此外,文本选项我还勾选了平滑文本和对粗体文本使用亮丽颜色进一步优化视觉体验。
最后
macOS 26 Tahoe作为苹果对Intel平台支持的最后一个版本,我希望它随着更新越来越好,能让我现在这台设备再多用几年。