前言
这是一份记录我在 MacBook Air M1(8G / 256G) 上搭建开发环境的随手笔记。已经是一台近 5 岁高龄的老笔记本了(虽然这样的老笔记本还有不少),考虑续航、温控和稳定性,我把系统锁定在 macOS 12.7(Monterey),避免频繁升级带来的兼容问题。整体目标是:确保基础开发功能齐全,终端体验顺手,同时维持系统的整洁与可维护性。
设备体验
- MBA M1 的单风扇无风扇散热和出色续航非常适合日常开发、轻度虚拟化与远程工作。性能有限,而且还是低配版,但通过合理的软件选择可以获得流畅体验。
- 为什么是 macOS 12.7:Monterey 在 Apple Silicon 上已经相当成熟,能兼容主流开发工具,虽然体验不到新系统新特性,但是功耗续航都十分可观。
- 系统安装习惯:保持 APFS 单分区,关闭自动升级,只在安全更新或确定兼容性时手动触发。安装完成后第一时间登录 Apple ID 以同步 Keychain 和常用设置。
初始设置清单
- 系统更新:
系统设置 → 通用 → 软件更新,仅安装安全补丁,关闭“自动更新”。 - 基本偏好:触控板(轻点点击)、Dock(位置调整),这些都是按照个人习惯任意调整。
开发工具安装策略
1. Xcode Command Line Tools
如果不用 switft 语言开发以及 Apple 相关开发需求的话,完整的 Xcode 就没必要进行安装了,直接安装相应的命令行工具即可。
1 | xcode-select --install |
安装完成后通过 xcode-select -p 确认路径是否正确。如果后续有需求安装了完整 Xcode,也可以重新指定 CLI 工具路径。
1 | └─> xcode-select -p |
2. Homebrew 为核心包管理器
1 | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" |
基础软件包建议:
1 | ## 更新软件包 |
先前安装 openssl@3 的时候会在 make check 阶段发生错误,但我最近重新配置的时候发现又可以直接安装了,只适合提示警告。如果有遇到 make check 报错的情况,可以查看这个讨论进行解决:# openssl@3 fails to build. 思路是类似的。
至于其他还缺少的软件包,会在 homebrew 安装其他软件时自动补全。
安装 llvm 会非常耗时,大概会持续满载运行 2 - 3 个小时,属于不得不品鉴的一环 —— 当然也可以直接使用官方的预编译包,就是可能得重新配置一下链接上 homebrew,一些细节可以参考这篇博文。
3. 编程语言管理
编译器与包管理器的选择很看个人喜好,我的习惯是尽量“能隔离就隔离”,保证项目之间互不污染,这部分就不过多赘述了。
Shell 与终端美化
1. 终端应用与主题
我依旧使用系统自带的 Terminal.app,挑一份对比度舒适的 Pro 主题做微调:调低透明度、启用自然暗色背景,再为不同 Profile 设定独立配色便于区分远程主机。
配色之外,真正决定体验的是 .zshrc 的结构,因为在 powershell 上非常喜欢那个Tokyo的主题,所以在 macOS 上也尝试用 oh-my-posh 渲染提示符:
1 | # ~/.zshrc(节选) |
2. 字体选择
终端提示符塞了很多小图标之后,直接选用带 Nerd 补丁的等宽字体最省心。我个人常驻的是 ComicShannsMono Nerd Font:造型有点俏皮,字宽也不是最规整,但习惯后看上去非常放松。若你更看重清晰度,JetBrainsMono Nerd Font、MesloLGS NF 等会更稳。无论最终选哪一款,字号保持在 13–14pt、适度调大行距,再开启连字,就能在信息密度和可读性之间取得平衡。

网络代理与同步
1. 系统层代理
日常使用 Clash 作为系统代理,只需要订阅链接或者订阅文件就可以同步。可以安装插件并开启 TUN 模式,就可以接管系统的所有流量。不过还是十分担心我贫瘠的流量() 所以日常绝大部分情况都是手动挂个回环代理:
1 | export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890 |
结语
在入门款 MBA M1 上,macOS 12.7 的开发体验核心依旧是还是“轻量而稳定”,哪怕以及过去了将近五年。只要把系统维持在可控状态,靠 Homebrew 管好软件包,再配上一套顺手的终端与代理,就足以应付日常开发、记笔记,乃至上课通勤时的零碎工作。说到底,我始终把这台机器当成可靠的伙伴:它还在源源不断地帮我写代码、记生活,这份生产力与情感的价值得让我舍不得换新。既然已经相处出了默契,就继续好好维护它,直到它停止工作的那一刻吧。
