
一键配置终端环境,支持 macOS、Debian/Ubuntu 和 Windows (WSL)。新机器跑一个脚本,几分钟搞定完整终端。
| 平台 | 状态 | 包管理器 |
|---|---|---|
| 🍎 macOS | ✅ 主力平台 — 长期使用验证 | Homebrew |
| 🐧 Debian / Ubuntu | 🧪 实验性 — 可用但未经长期测试 | apt + 内置二进制 |
| 🪟 Windows (WSL) | 🧪 实验性 — 可用但未经长期测试 | apt(WSL 内部) |
注意: 本脚本主要在 macOS 上开发和测试。Linux(Debian/Ubuntu)和 WSL 支持已添加且可用,但尚未经过长期使用测试。欢迎提 Issue 和 PR! | 🪟 Windows (原生) | ⛔ 不支持 | 请先安装 WSL |
git clone https://github.com/lewislulu/terminal-setup.gitcd terminal-setup && ./setup.sh
git clone https://github.com/lewislulu/terminal-setup.gitcd terminal-setup && ./setup.sh
先安装 WSL(如果还没有):
# 在 PowerShell(管理员)中运行wsl --install
然后在 WSL 中:
git clone https://github.com/lewislulu/terminal-setup.gitcd terminal-setup && ./setup.sh
./setup.sh --fish # Fish shell./setup.sh --zsh # Zsh + 类 Fish 插件./setup.sh --dry-run # 预览会做什么(不做任何改动)
一行命令(自动 clone):
bash <(curl -fsSL https://raw.githubusercontent.com/lewislulu/terminal-setup/main/setup.sh)
| 🐟 Fish | 🐚 Zsh | |
|---|---|---|
| POSIX 兼容 | ❌ 自有语法 | ✅ 兼容 |
| 自动补全建议 | ✅ 内置 | ✅ 通过插件 |
| 语法高亮 | ✅ 内置 | ✅ 通过插件 |
| Node 管理 | fnm(共享) | fnm(共享) |
| 配置文件 | ~/.config/fish/config.fish | ~/.zshrc |
| 适合 | 开箱即用,省心 | 写脚本,POSIX 兼容 |
| 组件 | 说明 |
|---|---|
| Ghostty | GPU 加速终端模拟器 |
| Fish 或 Zsh | Shell(你选) |
| Starship | 跨 Shell 提示符(Catppuccin Mocha 主题) |
| MesloLGS NF | Nerd Font,提供图标和 Powerline 字形 |
| bat | 带语法高亮和行号的 cat |
| eza | 带图标、git 状态、树形视图的 ls |
| fd | 更快更直观的 find |
| ripgrep | 比 grep 快几个数量级 |
| fzf | 模糊查找器(Ctrl+R / Ctrl+T / Alt+C) |
| btop | 漂亮的系统监控 |
| zoxide | 智能 cd,学习你的习惯 |
| jq | JSON 处理器 |
| tldr | 简化版 man 手册,附带示例 |
| delta | 带语法高亮的 git diff |
| lazygit | Git 终端 UI |
| fnm | 快速 Node 版本管理器(Rust 编写) |
| Zellij | 现代终端复用器(可选) |
bat 在 Debian 上叫 batcat,fd 叫 fdfind — 脚本会自动创建软链接~/.local/share/fonts/| 快捷方式 | 展开为 |
|---|---|
ls | eza --icons --group-directories-first |
ll | eza -la --icons --group-directories-first |
lt | eza --tree --icons --level=2 |
cat | bat |
find | fd |
grep | rg |
top | btop |
lg | lazygit |
| 按键 | 功能 |
|---|---|
Ctrl+R | 模糊搜索命令历史 |
Ctrl+T | 模糊查找文件(用 fd 作为后端) |
Alt+C | 模糊进入目录 |
fnm install 22 # 安装 Node 22fnm install --lts # 安装最新 LTSfnm default 22 # 设置默认版本fnm use 22 # 当前 shell 切换echo "22" > .node-version # 进入目录自动切换
两种 Shell 配置都内置了 set-ssh-key 函数:
set-ssh-key my-key-name # 清空 agent,加载 ~/.ssh/my-key-nameset-ssh-key # key 不存在时列出所有可用 key
最佳实践: 推荐在
~/.ssh/config里用Host别名 +IdentitiesOnly yes实现自动匹配。set-ssh-key是兜底方案。
GPU 加速、原生 macOS 应用、启动快、配置格式干净。iTerm2 做了太多事情导致臃肿,Ghostty 走的是现代极简路线。项目还年轻但发展很快。
如果你只用 Zsh 且追求极致 prompt 速度,p10k 的 instant prompt 确实更快。但 Starship 够快了,而且通用性更好。
不同人有不同需求:
bash 脚本不能直接跑,有些工具假设你用 POSIX shell。如果你经常需要跑别人的脚本 → Zsh。
如果你追求最干净的 Shell 体验,不介意偶尔 bash script.sh → Fish。
总共只有 3 个 Zsh 插件:zsh-autosuggestions、zsh-syntax-highlighting、zsh-completions。
3 个插件用插件管理器是杀鸡用牛刀:
brew install + .zshrc 里一行 source。零额外依赖。Linux 上: Zsh 插件通过 apt(
zsh-autosuggestions、zsh-syntax-highlighting)或 git clone 安装。
| fnm | nvm | |
|---|---|---|
| 语言 | Rust | Bash |
| Shell 启动耗时 | ~1ms | ~200-400ms |
| Fish 支持 | ✅ 原生 | ❌ 需要 nvm.fish |
| Zsh 支持 | ✅ 原生 | ✅ 原生 |
| 自动切换 | ✅ --use-on-cd | ⚠️ 需要额外 hook |
| 安装方式 | brew install fnm / curl | curl 脚本 |
| 跨 Shell 共享 | ✅ 共用同一份 Node | ❌ 存储路径不同 |
Git 默认 diff 能用但太丑。Delta 加了语法高亮、行号、并排对比、精确到单词的变更高亮。
带脑子的 cd。用几天后 z proj 直接跳到 ~/projects。
你能装的最有影响力的 CLI 工具。Ctrl+R 模糊搜索历史,Ctrl+T 模糊查找文件,用一周就回不去了。
MIT