Skip to content

Repository files navigation

zoumo's dotfiles

什么是 dotfiles

Dotfiles 是用于自定义开发环境的配置文件——包括 shell 设置、编辑器偏好、工具配置等。之所以叫 "dotfiles",是因为它们通常以点开头的文件名(如 .bashrc.gitconfig),在 Unix 系统中是隐藏文件。

快速开始

兼容性说明

本 dotfiles 目前支持以下环境:

  • macOS
  • linux: 目前只尝试过 debian - bookworm

MacOS 前置准备

如果你想从干净的 Mac 环境开始,请参阅"如何重装 macOS"。

安装 Xcode

  1. 安装或更新 Xcode 到最新版本,否则安装可能会失败
  2. 安装 Xcode Command Line Tools
$ xcode-select --install

安装 dotfiles

克隆仓库到 $HOME/.dotfiles

git clone https://github.com/zoumo/dotfiles.git ~/.dotfiles
cd~/.dotfiles
# 完整安装(默认)- 安装所有基础和附加包
bash ./script/bootstrap
# 最小安装 - 只安装基础包,跳过附加包
DOT_MODE=mini bash ./script/bootstrap
# 强制重置 macOS 默认设置(默认只运行一次)
FORCE_MACOS_DEFAULTS=1 bash ./script/bootstrap

注意: 安装完成后会自动将默认 shell 切换为 fish。

特性

安装内容概览

安装完成后,你的系统将包含以下内容:

  • 语言工具: Go, Node.js, Rust, Python, Java (通过 mise/uv 管理)
  • Shell: fish + Oh-My-Fish + starship 提示符
  • 终端: Alacritty / Ghostty + Zellij(GPU 加速终端与可恢复工作区)
  • 编辑器: Neovim + LazyVim 配置
  • Docker: OrbStack (macOS 上的 Docker 替代品)
  • 窗口管理: Loop (优雅的窗口管理工具)
  • 状态栏: Ice (macOS 菜单栏管理器)
点击展开完整软件包列表

Homebrew 二进制工具

GNU 核心工具:

  • coreutils, findutils, gnu-sed, bash

开发工具:

  • make, libxml2, libxslt, libiconv, gnupg, wget, ctags, grc, git-flow

实用工具:

  • mackup, trash, cheat, watch, colordiff, fx, tesseract, dos2unix

现代替代工具:

  • eza (ls), bat (cat), dust (du), duf (df), zoxide (cd), fd (find), procs (ps), ripgrep (grep)

开发辅助:

  • fzf, starship, zellij, tmux, smug, jnv, difftastic, tealdeer, kubectx, krew, dive, switcher

macOS 应用 (Homebrew Cask)

  • alacritty - GPU 驱动的跨平台终端
  • mos - 平滑鼠标滚动
  • maczip - 免费解压软件
  • iina - 现代播放器
  • eazydict - 翻译工具
  • orbstack - Docker 替代品
  • bleunlock - 蓝牙解锁
  • loop - 窗口管理
  • jordanbaird-ice - 菜单栏管理

字体

  • font-hack-nerd-font
  • font-caskaydia-cove-nerd-font

工具选择理念

为什么选择这些工具?以下是每个关键工具的选型理由。

Shell: Fish

Fish (Friendly Interactive Shell) 是一个为用户友好设计的现代 shell:

  • 开箱即用的自动补全:无需复杂配置,Fish 提供强大的命令、参数和路径补全
  • 语法高亮:命令在输入时就会显示不同颜色,帮助识别语法错误
  • 基于 Web 的配置界面:通过 fish_config 可以在浏览器中配置主题和函数
  • 简洁的脚本语法:比 Bash 更直观,没有 POSIX 的历史包袱
  • 与 Oh-My-Fish 配合:提供插件生态和主题支持

唯一需要注意的是 Fish 不完全兼容 POSIX,一些 Bash 脚本可能需要调整。但日常使用中,Fish 的优势远大于这个限制。

终端: Alacritty / Ghostty

Alacritty 是一个使用 GPU 加速的现代终端模拟器:

  • 极致性能:利用 GPU 渲染,滚动和输出速度远超传统终端
  • 最小化设计:不内置标签页、分屏等功能,遵循 Unix 哲学——专注做一件事
  • 配置简单:使用 TOML/YAML 配置文件,无需 GUI 设置
  • 跨平台:macOS、Linux、Windows 都可用相同配置

Ghostty 的现有本地配置也由仓库管理。两个终端默认先启动登录 Fish,再由 Fish 连接或创建同一个 zoumo Zellij session;标签页、分屏和会话恢复统一 交给 Zellij。tmux 与 smug 仍保留安装,需要时可以直接使用原命令。

终端工作区: Zellij

Zellij 负责终端中的标签页、分屏、layout 和后台会话:

  • 预设工作区:默认启动等分四宫格,也可以为项目定义独立 layout
  • 后台会话:Detach 后任务继续运行,随时可以重新 attach
  • 会话恢复:保存退出会话的布局和命令,机器重启后可以重建工作区
  • 低迁移成本:保留 Ctrl-b/Ctrl-a 前缀及常用 tmux 快捷键
  • 跨平台:原生支持 macOS、Linux 和 Windows
  • 兼容保留:bootstrap 仍安装 tmux 与 smug,mux 默认进入 zoumo Zellij session

安装、配置和 tmux 迁移说明见 Zellij 安装与配置

Docker: OrbStack

OrbStack 是 macOS 上 Docker Desktop 的现代替代品:

  • 启动速度:秒级启动,Docker Desktop 需要数十秒
  • 资源占用低:内存占用仅为 Docker Desktop 的 1/3
  • 原生网络:无需端口转发,容器端口直接可用
  • 无缝集成:完全兼容 Docker CLI 和 docker-compose
  • 额外功能:内置 Linux 虚拟机和 Kubernetes 支持

对于开发者,OrbStack 带来的体验提升是革命性的——不再需要等待 Docker 启动,不再因为资源占用而卡顿。

GNU 工具

macOS 的命令行工具来自 BSD,与 Linux (GNU) 有细微差异。安装 GNU 工具的原因:

  • 跨平台脚本一致性:编写能在 macOS 和 Linux 上运行的脚本
  • 更丰富的功能:GNU 工具通常有更多选项和扩展
  • 脚本兼容性:许多开源项目的构建脚本假设 GNU 环境
GNU 工具替代的 BSD 工具主要差异
coreutilsBSD userlanddate -d, ls --color 等 GNU 扩展
gnu-sedBSD sed支持 -i 直接修改文件(无需备份后缀)
findutilsBSD find更丰富的 -exec 语法和选项

通过在 PATH 中添加 GNU 工具前缀(如 gdate, gsed),可以同时保留两者,按需使用。

版本管理: mise

mise (前身为 rtx) 是一个统一的多语言版本管理器:

  • 统一管理:一个工具管理 Go、Node.js、Rust、Java 等所有语言版本
  • 兼容 asdf:可以直接使用 asdf 插件生态
  • 自动切换:进入项目目录自动切换到配置的版本
  • 速度快:用 Rust 编写,比 asdf 快 10-100 倍
  • 无需 shim:直接操作 PATH,没有性能损耗

告别 nvm、pyenv、goenv、sdkman 等多个版本管理器,mise 一个就够了。

Python: uv

uv 是 Astral 公司用 Rust 编写的极速 Python 工具:

  • 安装速度:比 pip 快 10-100 倍
  • 统一工具链:替代 pip、pip-tools、pipx、poetry、pyenv、virtualenv
  • 自动虚拟环境:运行脚本自动创建和管理 venv
  • 项目管理:内置依赖解析和 lock 文件支持
  • 工具安装uv tool install 替代 pipx

为什么不用 pyenv?uv 安装 Python 的速度比 pyenv 快很多,而且它还能管理依赖和虚拟环境,一站式解决所有 Python 开发需求。

编辑器: Neovim + LazyVim

Neovim 是 Vim 的现代分支,LazyVim 是一个预配置的 Neovim 发行版:

  • 启动速度快:Lua 配置比 VimScript 快得多
  • LSP 原生支持:内置语言服务器协议,无需插件即可获得智能补全
  • Tree-sitter:更精准的语法高亮和代码理解
  • LazyVim 开箱即用:预配置了 LSP、格式化、Git、文件树等常用功能
  • 插件生态:使用 lazy.nvim 插件管理器,延迟加载,按需安装

为什么不用 VS Code?Neovim + LazyVim 提供了 VS Code 级别的功能,但保持了 Vim 的键盘操作效率。一旦适应,编码速度会显著提升。

MacOS 默认配置修改

自动修改以下的系统默认配置 macOS 默认设置

语言工具版本管理

工具管理工具说明
Gomise阿里云镜像
Node.jsmise清华镜像
Rustmise阿里云 rustup 镜像
Javamise通过 Homebrew 安装
Pythonuv极速安装、自动激活虚拟环境、清华 PyPI 镜像

现代工具替换

用现代替代品替换传统命令:

传统命令现代替代品描述
lseza带颜色和图标
catbat带语法高亮
findfd更快的 find
grepripgrep更快的 grep
dudust更直观的 du
dfduf更美观的 df
psprocs现代 ps
topbtop更美观的 top
cdzoxide智能目录跳转
tmuxZellij现代终端工作区、layout 和会话恢复

配置文件链接

点击展开配置文件清单

安装时会创建以下软链接:

文件路径用途
~/.config/.gitconfigGit 全局配置
~/.config/starship.tomlStarship 提示符配置
~/.config/alacritty/alacritty.tomlAlacritty 终端配置
~/.config/ghostty/configGhostty 终端配置
~/.config/fish/functions/Fish shell 自定义函数
~/.config/omf/init.fishOh-My-Fish 初始化配置
~/.config/omf/before.init.fishFish 启动前配置
~/.config/zellij/config.kdlZellij 主题、快捷键和会话配置
~/.config/zellij/layouts/default.kdlZellij 默认四宫格 layout
~/.config/smug/zoumo.yml兼容保留的 tmux 会话管理配置
~/.kube/switch-config.yamlkubectl context 切换配置
~/.tmux.conf.local兼容保留的 tmux 本地配置
~/.mvnvm.propertiesMaven 版本管理配置

Shell 别名

点击展开别名列表
别名命令说明
lseza现代化 ls
laeza -glhA显示隐藏文件和详情
treeeza -T -L3树形显示目录
catbat语法高亮 cat
topbtop现代化 top
rmtrash安全删除(仅 macOS)
vinvim使用 Neovim
vimnvim使用 Neovim
fcd_fzf_search_directoryfzf 目录搜索
fps_fzf_search_processesfzf 进程搜索
fh_fzf_search_historyfzf 历史搜索
fgl_fzf_search_git_logfzf Git 日志搜索
jvfxJSON 查看器
yvfx --yamlYAML 查看器
muxzellij attach --create zoumo连接或创建 zoumo Zellij session

开发指南

参考 开发指南

常见问题

如何更新工具版本?

使用 mise 管理版本:

mise ls # 查看已安装版本
mise install go@1.25 # 安装特定版本
mise use go@1.25 # 设置项目版本

参考

About

dotfiles

Resources

Stars

13 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages