🤔胡思乱想:最好的终端模拟器

type
status
date
slug
summary
tags
category
icon
password
notion image
工作几年了,基本都是单机搞开发,面对每天开开关关的 Gnome Terminal,我居然不知道它背后居然还有这么多的故事…

1. 终端的概念

终端有很多含义,比如最末端的节点,比如个人电脑,比如手机……
本篇文章讨论的是,作为计算机上的终端 —— Terminal 程序。 现代操作系统,无论 MacOS,Linux 还是 Windows 都形成了 内核 + 文件系统 的双层模式,用户无法直接操作内核,需要借助于 Shell(内核外壳的意思)来对内核进行管理。
在图形化操作系统上,并不能直接的去操作 Shell,需要使用一个接受操作系统调度的程序去操作 Shell,这就是图形化的终端模拟器,也叫做终端窗口。
终端窗口是很多 Linux 新手第一次接触图形化桌面时,用到的工具。它能够方便的使用 Shell,让用户更好的驾驭系统。一般来说,终端到 Shell 程序,分为以下三层:终端 ->【终端复用器】-> Shell。
这其中,终端复用器(terminal multiplexer)并不是必须的,有些终端已经自带这个。

2. 终端的分类

对于热衷于造轮子的程序员来说,几十年的计算机发展历史中,终端模拟器的种类数不胜数。这些终端有的是历久弥新,有的天马行空,总有一款适合你。

2.1. Windows 平台

  • CMD:Windows 经典终端,统治 Windows 平台数十年。【对于熟悉 Linux 终端的用户很不友好。】
  • Windows Terminal:微软开源的终端,于 Windows 11 后座位默认终端加入。【WT 起始可以玩出花来,比如可以选择不同的 Shell,比如 PowerShell、git bash 或者 MSYS2 + fish。】
  • xShell5:最强大的全能型终端,堪称最强!【要收费,但这不是它的缺点。】
  • MobaXterm:强大的全能型终端,all in one,有免费版和收费版。【免费版相当良心。】

2.2. Linux 平台

  • GNOME Terminal:GNOME 桌面自带的终端。【GNOME 桌面推荐】
  • Konsole:KDE 桌面自带的终端,支持分屏。【KDE 桌面推荐】
  • Mate Terminal:与 GNOME 终端类似。【Mate 桌面推荐】
  • QTerminal:Qt 编写的终端,支持多路复用,支持高度定制化。【支持 OpenGL 加速】
  • Deepin Terminal:深度团队编写的终端,无论在主题和分屏使用上都非常出色。【DDE 桌面推荐】
  • XTerm:非常古老的终端,可以作为以上终端启动失败的 fallback。

2.3. MacOS 平台

  • terminal:MacOS 自带终端,基本够用。
  • iTerm2:Mac 平台下超好用的终端,几乎成为每一台 Mac 的标配,是必装软件之一。【Mac 推荐】
  • Warp:Mac 平台下的超级终端,非开源,团队仅凭借这一个产品就收获融资,它有两大特色,一是窗口底部的固定编辑区,二是 AI 提示,非常强。

2.4. 跨平台

  • tabby:颜值超高的跨平台终端,由于使用了 JS 技术,部分使用者反馈有卡顿现象。
  • alacritty:使用 rust 打造跨平台终端,由于使用了 GPU 加速,号称史上最快!【推荐】
  • kitty:使用 C + Python 编写的现代化终端,支持 GPU 加速,比不上 rust 抢风头,但是潜力无限。【推荐】
  • wezterm:使用 rust 打造的跨平台终端,但是不如 alacritty,配置难学。

2.5. 小众选手

  • Yakuake:下拉式终端,设计新颖【Linux】
  • Terminator:古老的终端。【Linux】

3. 多路复用技术

多路复用技术是为了弥补终端程序不支持分屏显示等操作,所想出来的一种解决方案,借助于终端复用器,可以让那些终端变得更高效。
  • tmux: 包含 Window,Pane,Session 等概念,为后续同类型产品的推出,提供了指引。【推荐】
  • zellij:使用 rust 编写的终端复用器,兼容 tmux 的快捷键,显示提示都更友好,但是用的人不对,也没有人打 deb 包。【推荐】
  • screen:老牌终端复用器,设计思想上已经落后。【不推荐】

4. 未来的趋势

除了以上介绍的终端复用器技术之外,TUI 还有很多好用的技巧。据我观察,终端技术发展到今天,除了满足基本功能外,还呈现了以下的几个特点:

4.1. 全平台

新版本的终端,大部分都注重全平台支持,或者说在选用技术栈时,选择了跨平台比较好的技术栈。

4.2. 智能化

Warp 终端的 AI 模式,非常智能,虽然不开源,但是也让人眼前一亮。

4.3. 个性化

新出现的终端,一定解决了竞品没有解决的问题,比如 GPU 加速,启动速度慢等。一定要有吸引别人进行使用的个性化功能,才能让别人抛弃旧工具,迎接新时代。

5. 总结

5.1. Shell 的种类

Shell 是为使用者提供操作界面的软件,接收用户指令,并调用相应的程序。Shell 与 Unix 系统有很深的渊源,在后续出现的 Shell 中,也借鉴了 Bash 的部分设计,保证了兼容性问题。
  • bash:Bourne again shell,sh 的重写,已经成为事实标准。
  • dash:Debian 系列使用的 Shell。
  • zsh:非常优秀的智能化 Shell,搭配 ohmyzsh,体验非常出色。
  • fish:非常优秀的智能化 Shell,插件丰富,体验出色,但兼容性问题限制了它的发展。

5.2. 推荐的组合

总结起来就是三条原则:
  • 不支持多路复用的终端 + 复用器 + 某种 Shell
  • 支持多路复用的终端 + 某种 Shell
  • 特殊平台的最佳选择:
  • Windows:MobaXterm,Windows Terminal + 某种 Shell
  • Mac:iTerm2 + 某种 Shell
胡思乱想:我从隔离期间学到的事胡思乱想:人生技能加点
飞行日志
常用链接
韭菜搞钱
三省吾身
无问东西
知行合一