从头开始设置 macOS 终端

刚买了新的 MacBook 或 iMac?了解如何从头开始设置美观且功能强大的 macOS 终端

最终配置概览:iTerm2 + zsh + oh-my-zsh + powerlevel10k/starship

本教程是为较新的 Apple 硅芯片(M1/M1 Pro/M2 等)和 macOS Monterey 12.1 编写的

作为预览,这是我们最终要设置的终端图像.png

对于上下文,这是我们将开始使用的默认 macOS 终端!

图像.png

家酿

Homebrew 是一个适用于 macOS(以及 GNU/Linux)的包管理器,它使得下载、安装、升级和维护包非常方便(想想应用程序、软件库或命令行工具)。假设您要安装 Firefox,您只需在终端上输入brew install firefox,而不是搜索 Firefox 网站,访问其网站,找到下载链接,打开安装程序并完成所有步骤。删除软件包并使用简单的终端命令升级它们同样容易。在 GNU/Linux 世界中流行的一些包管理器是 apt(用于基于 Debian 的发行版)、pacman(在基于 Arch 的发行版中找到)和 dnf(Fedora)。 macOS 上使用最广泛的包管理器是 homebrew

安装 Homebrew

首先,我们需要通过 XCode 提供的某些命令行工具。我们使用:

$ xcode-select --install

按照提示开始安装并接受软件许可证。

然后我们使用curl安装 homebrew 安装脚本。请验证来自homebrew 网站的确切安装脚本链接。

$ curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh

验证您从 Internet 运行的脚本的内容是个好主意,您可以使用lessvim或您选择的任何其他编辑器或文本查看器来执行此操作

然后我们通过 bash 执行这个脚本:

$ bin/bash install.sh

现在,我们将 homebrew 可执行文件添加到我们的 PATH 中,这样我们就可以直接在终端上使用brew命令,而无需每次都指定其可执行文件的位置。 shell 会查看PATH中指定的所有目录,以查找您在 shell 中输入的任何命令的可执行文件。

请注意,对于 Intel 芯片和基于 ARM 的 M1 Silicon 芯片,自制程序安装程序的位置不同。对于后者,位置为/opt/homebrew/bin。第一次运行install.sh时,可以方便地查看确切的路径位置

Warning: /opt/homebrew/bin is not in your PATH.

您在此警告中看到的路径是您需要添加到 shell 的PATH的路径。

较新的 macOS 版本默认带有zshshell,因此我们现在修改zshrc(或您使用的任何 shell 的配置文件)并使用您选择的文本编辑器将自制可执行文件路径添加到PATH。我将在这里使用 vim:

vim ~/.zshrc

我们需要添加到zshrc的末尾: ()请注意,如果您根本没有配置系统,那么~/.zshrc文件很可能不存在。在这种情况下,只需创建文件并将以下命令添加到新创建的文件中)

# Add homebrew executable location to PATH
export PATH=/opt/homebrew/bin:$PATH

现在,我们使用source来使我们对 zshrc 的更改生效

$ source ~/.zshrc

要查看是否所有内容都已正确安装,请尝试运行:

$ brew help

使用 brew 安装一些东西:

$ brew install neofetch

你应该在你的终端上运行 neofetch 得到类似的东西:

终端仿真器

终端仿真器是您与_shell_ 交互并在其中输入命令的程序。虽然默认终端仅适用于偶尔使用终端,但如果您是每天与终端进行大量交互的人,您希望拥有一个功能强大、功能丰富且高度可定制的终端仿真器,它是为高级用户制作的。

有很多选择终端仿真器的选择,每个都有自己的功能集、优点和折衷方案。一些终端仿真器的目标是极简、轻量和快速,但牺牲了一些花哨的功能(例如 alacrity),而一些终端仿真器是使用 JavaScript(例如 hyper.js)和 Web 技术构建的成熟的 Electron 应用程序,它们提供了一个漂亮的开箱即用的可定制终端,但以速度为代价。

选择正确的终端仿真器有很多因素,这完全取决于您的需求和您愿意做出的具体权衡,这完全是个人选择。没有一个客观的“最佳”终端。

我在 GNU/Linux 上选择的个人工具是这个功能极其丰富、速度快(它的 GPU 加速!)并且相当容易定制的终端仿真器,称为 Kitty。尽管这一次,本着尝试新事物的精神,我将使用非常流行且功能丰富的终端仿真器,该仿真器面向 macOS 的高级用户,名为 iTerm2iTerm2 需要牢记的一个主要警告是它不是跨平台的。但是,如果您需要为 macOS 构建和优化的强大功能,它是一个不错的选择。

安装和设置 iTerm2

现在我们可以使用包管理器,安装 iTerm2 就这么简单:

$ brew install iterm2

图像.png

这就是 iTerm2 开箱即用的外观。有点太沉闷和乏味了,嗯?让我们开始定制这个。虽然您可以直接编辑 iTerm2 的配置文件,但它还提供了一个非常简洁的 GUI 工具来更改其配置和设置。

为了美化iTerm2,您可以查看Preferences -> Profiles -> Colors -> Color Presents中的一些预装主题。如果您没有找到任何令人满意的主题,网上有一堆主题可供选择。您只需下载主题文件并将其导入 iTerm2 即可使用。iTerm2colorschemes是一个很棒的网站,可以找到很多通用终端配色方案。我个人从这里挑选了 Ayu Mirage 配色方案。要快速下载它,只需执行以下操作:

$ cd Downloads # or wherever you'd like to download the color scheme
$ curl -O "https://raw.githubusercontent.com/mbadolato/iTerm2-Color-Schemes/master/schemes/Ayu%20Mirage.itermcolors"

然后转到Preferences -> Profiles -> Colors -> Color Presents并导入所有您想尝试的下载主题。

您还可以通过在Preferences -> Profiles -> Window中调整透明度和模糊半径来直接获得磨砂玻璃般的模糊效果。请记住,较大的模糊半径会影响性能,因此如果您不想影响性能,最好禁用模糊半径。我个人将使用透明度值以及模糊半径值25

最终,您会得到一个如下所示的终端:

图像.png

外壳

在设置终端环境的过程中您需要做出的另一个选择是_shell_。 shell 是在 REPL 循环中运行的实际程序,您可以在其中输入终端命令。有多种外壳可供选择,三种最主要的是bashzshfish

bash 是使用最广泛的 shell,是大多数 GNU/Linux 发行版中的默认 shell,它非常稳定,维护良好。它于 1989 年首次发布,由 GNU 开发,作为 Bourne shell 的 free 替代品。虽然它不像许多较新的 shell 那样提供花哨的功能,但它提供了久经考验的、相当简单且无臃肿的体验,以及一致性,因为你很可能会在大多数机器上找到 bash shell说 ssh 进入。

zsh 本质上是 bash,但经过现代化改造,增加了许多功能和生活质量改进。它也比 bash 更可定制,有很多插件和主题以及一个蓬勃发展的社区。

fish 是另一种现代外壳,它提供了一个自以为是的最小但非常实用的外壳。它带来了一些开箱即用的强大功能,例如智能自动完成。如果您想要一些现代且实用的东西而不需要大量修补,它是最好的外壳。它不像 zsh 那样可配置,但它的默认开箱即用体验要好得多。 fish shell 的主要警告是它不符合 POSIX,这意味着无法保证 bash 脚本可以很好地与 fish 一起使用,并且事情可能与您在 POSIX 兼容的 shell 中所期望的有所不同。 (POSIX 是 IEEE 发布的关于 Unix 程序和操作系统应该如何操作和交互的标准,您会在 Unix 世界中经常遇到这个术语。您可以期望标准中指定的所有行为来自符合 POSIX 的操作系统或应用)

直到最近,macOS 一直默认使用 bash,zsh 是 macOS Catalina 及更高版本的默认 shell。这种转变主要是由于许可,Apple 一直坚持使用非常过时的 bash 版本,因为极其 freelibre 和开放的 GPLv3 许可证(与 bash 直到 2008 年左右才发布的早期 GPLv2 相比)可能为几乎完全专有和闭源的Apple生态系统([这篇文章很好解释](Why does macOS Catalina use Zsh instead of Bash? Licensing))

我个人使用 zsh,因为它非常强大、可定制并且插件生态系统非常棒。如果您想继续使用 zsh,则无需更改任何内容,因为它已经是默认 shell!

配置zsh

要管理与 zsh 相关的插件和主题,最好有一个框架来管理这些(有点类似于brew如何使安装、管理和更新应用程序变得容易)。我绝对不是必须使用整个框架来添加插件(最终是 zsh 脚本)。事实上,很多人认为oh-my-zsh仅用于管理插件和主题相当臃肿,有些人建议使用轻量级替代品,例如pretzo,而另一些人只是手动添加插件并配置它们,不喜欢框架使这个过程复杂化和抽象化的事实.

也就是说,使用oh-my-zsh的主要理由是它非常简单,因为添加插件就像将它们的名称添加到 zshrc 一样简单,而且它只是拥有大量社区支持、资源和文档。它也不会妨碍您。如果你喜欢深入了解他们的 shellrc 是如何工作的,只添加他们想要的东西并控制它,那么使用 oh-my-zsh 之类的东西可能是个坏主意。另一方面,如果您想通过插件快速轻松地添加功能并更改主题,那么像 oh-my-zsh 这样的插件管理器是不错的选择。虽然目前我将设置 oh-my-zsh,但我确实计划尝试使用更轻量级的插件管理器,如pretzo

哦,我的 zsh

要安装 oh-my-zsh,请运行:

$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

图像.png

oh-my-zsh sorta 接管您的 zshrc(zsh 的配置文件)并使用自己的默认值。安装 oh-my-zsh 后最明显的变化之一是将 zsh 主题更改为其默认值(Robby 的主题,由 oh-my-zsh 的制造商创建和使用的主题)。您可以注意到_prompt 发生了显着变化。

提示是 shell 最完整的视觉方面之一。提示是之前格式为username@device-name ~%的部分,现在在 Robby 主题中是一个箭头,后跟当前目录和有关 git 存储库的信息。您可以自定义提示以提供大量信息 - 例如当前时间,一个进程运行了多长时间,电池百分比,你所在的一些编程环境的版本号,等等。不过,作为一名程序员,也许您可以自定义提示告诉您的最有用的事情是 git 信息,以防您当前位于 git 存储库的目录中。它可以告诉你当前所处的 git 分支、是否有未暂存的更改等信息。

对于我的 zsh 主题(以及一般的终端提示),我个人在 starshippowerlevel10k 之间交替。它们非常优雅、可定制且非常实用。这一次,我将使用 powerlevel10k

强大的 oh-my-zsh 插件

使用插件,您可以真正利用社区的力量使终端更有用。即使你想避免花哨的东西,也有一些绝对必须有的插件,比如zsh-syntax-highlightingzsh-autocomplete,这两个插件我现在不能没有。它们都提供非自动完成和语法突出显示,前者根据您的终端使用历史提供fish shell esque非侵入式自动完成建议,后者提供类似于现代代码编辑器中的语法突出显示,输入错误/不正确的命令不同的颜色使它们很容易被发现,字符串是不同的颜色,等等。

要安装zsh-autocomplete,请克隆此存储库:

git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

要安装zsh-syntax-highlighting,请克隆此存储库:

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

现在我们需要前往我们的zshrc并在其中获取这些插件:

plugins=( 
    # other plugins...
    zsh-autosuggestions
    # other plugins...
    # zsh-syntax-highlighting must be the last plugin sources
    zsh-syntax-highlighting
)

还有许多其他插件,寻找有用的插件以改善您的终端体验总是很高兴。请注意,启用大量插件可能会降低您的终端速度。

字体简介

但在我们继续之前,安装一些终端友好字体是个好主意。这种字体提供的主要优势是支持_ligatures_,其中两个或多个字符组合成一个_glypyh_。例如,<u003d 符号变成更类似于您在纸上写小于或等于符号的方式。我们希望有一种连字友好的字体,以便您的提示符可以显示这些在终端上看起来非常漂亮的花哨的连字

在 iTerm2 或 Termux 上,powerlevel10k 可以自动安装与其配合使用的字体,但是您可以查看大量字体,并为您的终端提供出色的连字和字形支持。 JetBrains Mono 是我在所有 IDE 和编程环境中一直用作主要字体的一种字体,它在终端上也能很好地工作。

功率等级10k

powerlevel10k是我们将在本指南中使用的 zsh 主题。要安装它,请运行:

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

然后我们需要通过设置来改变zsh主题:ZSH_THEME="powerlevel10k/powerlevel10k"in~/.zshrc

获取 zshrc 或重新启动终端后,您应该会看到以下配置屏幕:

图像.png

如果你在 iTerm2 上,你应该得到这个选项来自动安装 Meslo Nerd 字体,这是一种支持连字的字体,与 powerline10k 配合得很好。如果您没有任何类似的字体,您可能希望继续安装并使用 Neslo Nerd 字体

在这里,只需按照配置向导中的步骤进行操作,这些步骤主要是关于您希望提示的外观。这就是我的配置最终的样子:

图像.png

如果需要,您也可以向 iTerm2 添加边距,因此终端窗口和实际外壳之间存在某种边距。您可以通过在 iTerm2 首选项中转到Appearance -> Panes -> Side Margins来执行此操作

星舰

与 powerlevel10k 相比,Starship 是一个更简洁的替代提示,但同时提供了非常相似的功能。它非常活泼,是用 Rust 编写的。要获得 starship shell 提示符,请在终端上运行:

brew install starship

在此之后,您需要将此行添加到~/.zshrc的末尾:

eval "$(starship init zsh)"

重新加载终端会话或源 zshrc,您应该会在终端上看到 starship 提示

图像.png

这就是星际飞船的样子!

Logo

ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!

更多推荐