如何在 macOS 终端中自定义 zsh 提示符

核心要点

  • macOS 允许用户在终端中个性化 zsh 提示符,使其更具特色并符合个人偏好。
  • 通过创建 .zshrc 配置文件,可以集中存储所有 zsh 提示符的自定义设置。
  • 你可以通过添加各种变量值来修改 zsh 提示符,例如 %n (用户名)、%m (Mac 型号名称)、%W (日期) 和 %T (时间)。

无论你希望 zsh 提示符呈现不同的颜色,显示更详尽的信息,还是采用简洁的设计以充分利用屏幕空间,macOS 都能满足你的需求。接下来,我们将探讨如何在终端中自定义 zsh 提示符,让它在各种背景下都能脱颖而出。

zsh 提示符的基础知识

当你在 Mac 上打开终端应用时,你会看到一些有用的信息,例如你上次登录的时间以及命令提示符。默认情况下,提示符通常类似于:

 Last login: Wed Feb 3 22:00:40 on console
alvin@MacBook-Air ~ %

zsh 提示符会显示一串包含用户名和计算机型号 (如 MacBook Air, MacBook Pro, Mac mini 等) 的文本。波浪号 (~) 表示提示符当前位于主目录。

如果你通过终端导航到文件系统中的其他目录,提示符会显示当前目录的名称,而不是波浪号。

创建 Z Shell 配置文件以存储所有设置

通常情况下,你需要修改系统文件才能更改默认外观。然而,macOS 更新会重置所有系统文件为默认值,导致你之前所做的所有更改丢失。为了避免这种情况,你可以创建一个专门的 zsh 配置文件 (也称为点文件),用于存储所有 zsh 提示符的自定义设置。

默认情况下,你可能在 macOS 中找不到此点文件,因此你需要手动创建。 推荐创建一个新的 .zshrc 配置文件来保存所有设置,例如 zsh 提示符的外观和行为。 创建 zsh 配置文件(点文件)的方法如下:

  • 打开终端应用程序。
  • 键入以下命令并按回车键:
     touch ~/.zshrc 
  • 如果 .zshrc 配置文件不存在,touch 命令将创建一个新文件。如果该文件已存在,则此命令不会执行任何操作。

    这会在你用户帐户的主目录中创建一个 .zshrc 配置文件。 如果你启用了 Mac 上查看隐藏文件的功能,你可以在 Finder 的 /User/<用户名>/ 路径下找到它。

    创建后,每次启动终端时,zsh 配置文件都会被用于非登录交互式 shell。不过,如果存在其他特定于登录的文件(如 .zprofile 和 .zlogin),它只会被用于登录 shell。

    在终端中自定义 zsh 提示符

    通常,默认的 zsh 提示符会显示用户名、计算机名称和当前目录位置等信息。这些信息存储在 /etc/zshrc 路径下的 zsh shell 系统文件中:

     PS1="%n@%m %1~ %#" 

    在这串变量中:

    • %n 代表当前用户的用户名。
    • %m 表示你 Mac 的型号名称。
    • %1~ 代表当前工作目录路径,其中 ~ 表示 $HOME 目录位置的缩写。
    • %# 表示如果 shell 以 root (管理员) 权限运行,提示符将显示 #,否则显示 %。

    要修改默认的 zsh 提示符,你需要添加相关的值,使提示符的显示方式与默认值不同。

    以下是如何操作:打开终端,键入以下命令,然后按回车键:

     nano ~/.zshrc 

    如果 .zshrc 配置文件之前已经存在,它可能不是空的。 但如果你运行上面的 touch 命令时它不存在,它将是空白的。你可以添加带有文本 PROMPT=’…’ 或 PS1=’…’ 的新行,并在省略号中包含相关的值。

    要对 zsh 提示符进行简单修改,你可以在 .zshrc 配置文件中输入以下值:

     PROMPT='%n:~$' 

    按 Ctrl + O 确认保存修改,然后按 Ctrl + X 退出 nano 编辑器。

    按 Cmd + T 打开新的终端窗口以查看刚刚所做的更改。新的 zsh 提示符将显示你的 Mac 的用户名、主目录以及末尾的 $ 符号。如果希望变量之间有空格,可以在上面的 PROMPT 变量中在 %n、~ 和 $ 之间添加空格。

    如果你想自定义用户名,请将 %n 替换为你喜欢的名字。例如:

     PROMPT='customusername~$' 

    现在,如果你打开一个新的终端窗口,你将看到以下内容:

    如果你想手动更改任何其他参数,你可以使用上面 PS1 变量中的格式替换默认变量。你可以根据自己的喜好在 zsh 提示符中包含或删除信息。

    如果觉得手动设置太复杂,可以使用像 Zsh 提示符生成器 这样的在线工具来帮助你自定义 Z shell。

    将日期和时间添加到 zsh 提示符中

    除了用户名之外,你还可以添加当前日期或时间,这样你就不必将视线移开当前终端窗口来查看这些信息。

    启动终端并打开 .zshrc 配置文件:

     nano ~/.zshrc 

    要在提示符中包含日期,可以使用 %D 使日期以 yy-mm-dd 格式显示,或者使用 %W 以 mm/dd/yy 格式显示。 例如,新的提示符如下所示:

     PROMPT='%n:%W:~$' 

    我们在上面的 PROMPT 变量中使用了冒号 (:) 来添加视觉分隔,但你可以使用空格或任何其他符号。例如,我们使用大于号 (>) 来分隔时间和当前目录。

    如果要在 zsh 提示符中包含系统时间,请添加 %T 以 24 小时格式显示当前时间,添加 %t 以 12 小时格式显示时间,或者使用 %* 以 24 小时格式显示时间和秒数。

     PROMPT='%n@%T>~$' 

    在 zsh 提示符右侧显示日期和时间

    要在 zsh 提示符的右侧显示信息,你需要将 RPROMPT 变量添加到 .zshrc 文件中。例如,要添加日期和时间,请输入以下内容:

    RPROMPT='%D @ %T'

    你的提示符现在将如下所示:

    在 zsh 提示符中为文本添加颜色

    除了修改终端应用程序的颜色之外,你还可以在 Mac 的 zsh 配置文件中的文本中添加一些颜色,以获得良好的视觉效果。启动终端并打开 .zshrc 配置文件:

     nano ~/.zshrc 

    Z shell 支持提示文本的颜色和灰色阴影以补充背景。你可以从以下选项中选择前景色(文本):黑色、白色、黄色、绿色、红色、蓝色、青色和洋红色。 以下是如何使用它们:

     PROMPT='%F{cyan}%n%f:~$' 

    如果你想选择特定的 zsh 颜色,你可以在终端支持的 256 种 8 位颜色之间进行选择。 以下是如何使用颜色的数值:

     PROMPT='%F{51}%n%f:~$' 

    你需要将 %F 和 %f 默认前景色变量放置在你要着色的相关文本之间。

    在 zsh 提示符中添加视觉效果

    如果为提示文本着色还不够,你可以突出显示 zsh 提示符,使其在文本墙中脱颖而出。对于初学者,你可以将 zsh 提示符加粗:

     PROMPT='%B%F{51}%n%f%b:~$' 

    在开头添加 %B 并在相关文本的末尾添加 %b 将使其变为粗体。

    同样,你可以将 %S 放在开头,将 %s 放在结尾以突出显示文本。突出显示的颜色将与你在 %S 和 %s 变量之间显示的颜色相同。

     PROMPT='%S%F{51}%n%f%s:~$' 

    你还可以为 zsh 提示符的文本添加下划线。 要在提示符中添加下划线,你可以在相关文本的开头包含 %U 变量,并在末尾包含 %u 变量。

     PROMPT='%U%F{51}%n%f%u:~$' 

    从 zsh 提示符中删除上次登录详细信息

    隐藏或禁用终端应用程序中显示的上次登录时间的顶行,可以让你的 zsh 提示符看起来更简洁。 你可以使用以下命令来隐藏该信息:

     touch ~/.hushlogin 

    下次打开终端时,你将不会在 zsh 提示符上方看到任何内容。

    重置你的 zsh 自定义

    如果你需要重新开始,可以通过将 PROMPT 或 PS1 变量设置为默认值来实现:

     PROMPT="%n@%m %1~ %#" 

    如果你使用了 RPROMPT 在 zsh 提示符右侧添加了信息,请将其从 .zshrc 文件中删除。

    或者,你可以安全地删除 .zshrc 文件中的 PROMPT/PS1 和 RPROMPT 变量。不用担心,因为 .zshrc 文件中的设置仅适用于当前用户配置文件。如果删除这两个变量,将使用存储在 Z shell 系统文件 /etc/zshrc 中的默认设置。

    现在你已经了解了如何自定义 zsh 提示符的所有细节,请开始尝试并将其打造成你独有的提示符。你可以加粗、添加下划线、缩短甚至在其中包含更多信息。如果你对修改不满意,你可以随时快速恢复到默认的外观。