---
title: "我目前在用哪款终端模拟器？(2024版)"
description: "在 macOS 上使用了多年 iTerm2 后，我切换到了 Kitty 作为我的主力终端模拟器。本文介绍了促使我更换的原因、我对 Alacritty 等替代品的评估，以及 Kitty 最终成为我跨平台（macOS 与 NixOS）环境理想选择的关键特性。"
pubDate: "2024-07-31"
categories: ["终端", "工具", "CLI", "Kitty", "跨平台", "macOS", "NixOS"]
---

**长话短说：我选择了 Kitty 终端模拟器。**

在尝试了多款终端模拟器后，我最终选定了 Kitty。这篇文章详细记录了我最近选择新终端模拟器的过程，特别是从长期使用的 iTerm2 切换到 Kitty 的原因和考量。

选择 Kitty 的核心原因在于它完美地满足了我对现代终端的需求：**跨平台支持** (macOS 和 Linux)、**GPU 加速渲染**、**同时支持连字特性 (ligatures) 与 GPU 渲染**、内置**图像协议支持** (这对 `yazi` 等工具至关重要) 以及易于通过 Git 管理的**纯文本配置文件**。

## 什么是终端模拟器？

在深入探讨之前，让我们先明确一下讨论的对象。大多数读者可能知道什么是终端，但为了完整起见：

> **终端模拟器**（terminal emulator）或**终端应用程序**（terminal application）是一种计算机程序，它在某个其他的显示架构里模拟一个视频终端。
>
> _来源：[维基百科](https://zh.wikipedia.org/wiki/%E7%B5%82%E7%AB%AF%E6%A8%A1%E6%93%AC%E5%99%A8)_

简单来说，它就是我们用来与命令行界面和 shell（如 Bash 或 Zsh）交互的软件窗口。硬件终端大多已成为历史，所以我们通常直接称这些模拟器为「终端」。

## 我的终端使用历史与 iTerm2 体验

多年来，我用过不少终端，包括 Konsole、Alacritty 和 Kitty。但由于我大部分时间都在 macOS 上工作，**iTerm2** 是我长期以来的日常主力。

尽管 iTerm2 常因性能问题受到诟病，但它在标准 60Hz 显示器上表现尚可，速度差异并不总是那么明显。它满足了我的大部分需求，但有几个小问题一直让我觉得不够完美：

- **无法同时启用连字和 GPU 渲染**：启用字体连字（例如将 `!=` 合并显示为 `≠`）会迫使 iTerm2 使用苹果的 Core Text 框架而非 GPU 进行渲染，这可能影响性能或视觉一致性 ([iTerm2 文档](https://iterm2.com/3.4/documentation-fonts.html))。
- **没有纯文本配置**：iTerm2 的配置只能导出为 `.plist` 或 `.json` 文件。对于通过 Git 管理 dotfiles 的开发者来说，这意味着每次更改后都需要手动导出配置，相比简单的文本配置文件要麻烦得多。

这些虽然只是小烦恼，但也代表了我希望能够克服的局限性。

## 寻求改变的契机：走向跨平台

真正促使我寻找替代品的动力，是我决定在我的 PC 上采用 NixOS。作为一名曾经的 Arch Linux 用户，后来主要因为 M 系列 ARM 芯片的高能效而转向 macOS，NixOS 的声明式哲学理念又重新吸引我，让我考虑在桌面上回归 Linux。

这一转变凸显了 iTerm2 对我新工作流的主要缺点：**它仅适用于 macOS**。我需要一个能在 macOS 和 Linux 上无缝工作的终端。这促使我认真评估了现代、跨平台、GPU 加速的选项，主要是 **Kitty** 和 **Alacritty**。

## 评估替代品：Kitty vs. Alacritty

Kitty 和 Alacritty 都是流行且性能优异的终端，利用了 GPU 加速。它们也都因其维护者观点鲜明而闻名（Kitty 的 Kovid Goyal，也因 Calibre 闻名；Alacritty 团队则专注于极简主义，有时被认为固执）。

- **Alacritty**：以其对简洁和速度的专注而闻名。然而，这种专注意味着它刻意缺少一些特性，如字体连字和对终端图形协议（如 Kitty 图形协议或 Sixel）的内置支持。
- **Kitty**：同样性能出色，但内置了更多功能，例如多路复用（类似 tmux）、各种「kittens」(辅助脚本)、连字支持，以及用于在终端中直接显示图像的自有图形协议。

## 为什么我选择了 Kitty

最终，**Kitty** 更符合我的需求：

1. **跨平台**：原生支持 macOS 和 Linux。
2. **GPU 加速**：提供流畅、快速的体验。
3. **支持连字**：能正确渲染编程连字，且不牺牲 GPU 渲染。
4. **支持图像协议**：对于像 `yazi`（我重度使用的 TUI 文件管理器）这样直接在终端显示图片预览的工具来说至关重要。Alacritty 对此的缺乏对我来说是一个显著缺点。
5. **基于文本的配置**：使用简单的 `kitty.conf` 文件，非常适合通过 dotfiles 进行管理。
6. **可扩展性**：提供标签页、窗口（多路复用）以及可编写脚本的「kittens」等特性。

虽然 Alacritty 的极简主义在理论上很吸引人，但 Kitty 更丰富的功能集在我的日常开发工作流中提供了更多实际好处，并且在我的使用中没有感受到明显的性能损失。

## 结论与配置

切换到 Kitty 的体验是积极的。它满足了我对跨平台、功能丰富且高性能终端的技术要求。迁移过程并非完全没有波折——例如，我不得不调整我的 `powerlevel10k` Zsh 主题设置，因为 Kitty 处理某些块元素的方式不同。我将来会写一篇文章来讨论这个问题。

对我的配置感兴趣的读者，可以在我的 [dotfiles 仓库（暂不可用）](https://eigenigma.io/en/posts/what-terminal-emulator-am-i-using-in-2024/) 中找到完整的 Kitty 配置。

最后，正如其开发者因 Calibre 而闻名，并且他对猫科动物的喜爱也反映在项目名称中：Kitty 确实是一只好猫。

`![Kitty](https://img.eigenigma.io/what-terminal-emulator-am-i-using-in-2024/kitty.app.png)`
