Skip to content

Mac 装机记录

2023年5月15日  21分钟

由于这两年公司裁了不少人,所以其实一直都是有不少 m1 机器可以换的,但是之前由于软件兼容性的问题一直没有换。今年工作内容变了,加上最近夏天快到了,温度越来越高,实在是忍不了那滚烫的 touch bar,于是决定换台 m1。

本文的写作目的:

机器配置

旧机器:

新机器:

最后一台无刘海 + Touch bar + M 芯片的 mbp。

初始化系统

机器拿到手的时候是在选择系统语言界面,按部就班走流程,需要注意的有:

准备工作

Chrome

Safari 对我来说主要功能就是当做 Chrome 下载器。开启代理后,从 https://www.google.com/chrome/ 下载安装 Chrome,而不是去 https://www.google.cn/intl/zh-CN/chrome/。很多国内专属版应用总是被代理商加入各种奇奇怪怪的东西,最好还是从原始的官网下载。

我平常浏览器只用 Chrome,使用谷歌账号同步数据。Chrome 默认走的就是系统代理,配置好代理后登入自己的账号,等待插件同步完成。

flags

打开 chrome://flags,以下是我开启的 flags:

一些日常在用的 Chrome 插件

以上是部分我日常在用的插件,其实还有一些开着但不常用,以及装了但是平时禁用的插件就不介绍了,总共有 90 多个插件。好在 Chrome 支持同步安装的插件和插件数据,只要登入了 Google 账号就能把旧电脑上的插件同步过来了。

其中一些 github 相关的插件需要重新生成 token。

TamperMonkey Beta

用 Beta 是因为某些 api 稳定版没有。在旧的设备上利用它自带的备份功能将最新的脚本备份到 Google Driver,再在新设备上恢复最新的备份。

以下几个是日常在用的脚本:

其它浏览器

预计后续还会安装以下浏览器:

等用到它们的时候再安装不迟。其实也就测试新的 api,测试兼容性,还有调试专属 bug 才会用到。

应用软件

以下是日常在用的,所以先安装:

以下很少用,用到的时候再安装:

安装字体

开发环境配置

VSCode

我用的是稳定版的 VSCode,安装的时候注意选择苹果芯片版本的安装包。

之前有一段时间一直用的是 insiders 版本,现在我只用稳定版:

VSCode 自带设置同步功能,我选择使用 Github 账号登入。

Iterm2

其实我日常用的最多的 terminal 是 VSCode 的集成 terminal,其次就是 iterm2Warp 暂时还没有啥吸引我转过去的杀手级优势,反倒很多功能都是没有的,例如 Key Mapping。

安装完后切换 Minimal 主题。

设置快捷键

  1. 打开 settings -> keys,删除默认的 ⌘ + ← 以及 ⌘ + → 快捷键配置
  2. 打开 settings -> profiles,点击 + 号新建一个新的 profile 命名为 custom,在 key mappings 中增加
    • ⌘ + ←,为 Send Hex Codes: 输入 0x01
    • ⌘ + →,为 Send Hex Codes: 输入 0x05
    • ⌥ + ←,为 Send Escape Sequence: 输入 b
    • ⌥ + →,为 Send Escape Sequence: 输入 f

配置 ⇧ + ⏎ 为直接执行 zsh-autosuggestions 提示的命令

# bindkey
bindkey '^[[1;3B' autosuggest-execute

新增 Key Mappings ⇧ + ⏎ 为 Send Escape Sequence: 输入 [1;3B

HomeBrew

finder 中打开 home 目录,通过 cmd + shift + . 显示隐藏文件。新增 .zshrc 文件,加入代理配置(把代理开关封装成一个 zsh 函数),类似:

function proxy() {
  export http_proxy="http://127.0.0.1:8888"
  export https_proxy="http://127.0.0.1:8888"
  echo "HTTP Proxy on"
}

打开 iterm2,开启终端代理,按照官方文档安装 homebrew, 这个过程中会安装 Command Line Tools for XCode,会比较慢。

安装常用命令行工具

使用 brew 安装以下命令行工具:

通过命令 brew leaves 输出所有手动安装的包(排除依赖包):

axel
bat
bcal
bitwise
bottom
cloc
cmatrix
croc
difftastic
dog
double-conversion
dua-cli
duf
dust
egoist/tap/dum
eva
fd
fmt
fnm
fx
gh
git
git-delta
git-filter-repo
git-quick-stats
glog
gnu-time
gnutls
gping
graphviz
htmlq
htop
httpie
hyperfine
ipinfo-cli
jq
lsd
lua
mkcert
neofetch
neovim
nghttp2
nginx
onefetch
oven-sh/bun/bun
pcalc
progress
pyenv
[email protected]
ripgrep
shared-mime-info
tokei
tree
ugit
yq
zoxide

这里列出来只是做个记录,用到的时候再装。

配置 shell

oh-my-zsh

zsh 框架。

修改以下配置:

# 时间格式
HIST_STAMPS="yyyy-mm-dd"

# 设置语言问英文,这样很多命令行工具就不会输出中文了,例如 git clone
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8

安装以下非官方插件:

powerlevel10k

zsh prompts,安装完后初次打开 terminal 会运行 p10k configure,下载字体需要走代理,因此你可能需要先开启全局代理。

修改以下配置:

# 显示具体的错误码
typeset -g POWERLEVEL9K_STATUS_ERROR=true
# 命令执行时间精度改为 ms
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=1
# 修改默认 Nodejs 图标
typeset -g POWERLEVEL9K_NODE_ICON='\uF898'

如果你问我为啥不用 starship,我的回答是:

nodejs

使用 fnm 管理 node 版本,安装最新的 lts node V18.16.0。

使用 corepack 安装 pnpm。

在旧设备上使用 pnpm ls -g 列出所有全局安装的命令行工具:

@antfu/ni
@ast-grep/cli
@growing-web/wpm
@rafaelrinaldi/whereami
@vscode/vsce
@yutengjing/find-similar-packages
carbonyl
cnpm
cross-port-killer
envinfo
eslint-nibble
esno
find-versions-cli
generator-code
is-my-node-vulnerable
npkill
npm-check-updates
nrm
open-cli
ovsx
pkg
prm-cli
semver
serve
stale-dep
syncpack
taze
tldr
ts-node
tsx
typescript
unimported
vite-perf
yo

有很多,用到的时候再装。

rust

直接按照官网提示使用 rustup 安装 rust

使用 cargo install --list 列出 cargo 全局安装的命令行工具。

cargo-update v11.1.1:
    cargo-install-update
    cargo-install-update-config
grex v1.4.1:
    grex
rusti-cal v1.0.1:
    rusti-cal
xcp v0.9.3:
    xcp

golang

直接从官网下载安装器安装最新的 Golang。

使用 ls $GOPATH/bin 列出所有全局安装的命令行工具。

clash-speedtest  github-compare   go-global-update

python

使用 pyenv 管理 python 版本。

系统设置优化

关闭用不到的服务

轻点来点按

系统设置 -> 触控板 -> 轻点来点按

三指拖移

系统设置 -> 辅助功能 -> 触控板选项 -> 拖移样式 -> 三指拖移

这不比按住拖移方便一万倍?

按键速率

系统设置 -> 键盘:

这就是同事问我为啥么我的机器按键这么丝滑的原因。

指针控制

系统设置 -> 辅助功能 -> 指针控制:

安装软件

安全性 -> 运行从以下位置下载的应用程序 -> Apple Store 和被认可的开发者

桌面优化

设置桌面图标 6 行 8 列:

defaults write com.apple.dock springboard-rows -int 6
defaults write com.apple.dock springboard-columns -int 8
defaults write com.apple.dock ResetLaunchPad -bool true;killall Dock

数据同步

iCloud

能用 iCloud 同步的都用 iCloud 同步:

壁纸

因为我电脑上图片不多,我是把整个 ~/Pictures 目录当做一个 git 仓库管理,使用 github 私有仓库同步。

代码

所有的代码我都用 git 管理,都统一放到 ~/code/ 目录下,在销毁旧电脑数据之前,注意将最新的代码变更同步到 github 或者公司内部的 git 托管服务器。

序列号

很多付软件的序列号或者激活码有激活设备数量限制,在你销毁电脑之前记得先取消激活。我所有的付费项目用的都是统一一个邮箱,需要激活码的时候直接取谷歌邮箱搜索。

现在很多平台都有二次认证,例如 github 和 npm,它们的 recovery code 我都是使用 github 的私有 gist 来备份。

dotfiles

这里我指的是在 home 目录下的一堆点开头的配置文件:

例如:

以及其它一些配置文件我都是使用一个私有的 github 仓库做备份同步。

总之,github 大法好,感谢微软财大气粗,私有仓库免费不限量。

销毁旧电脑数据

踩坑记录

clashX 订阅无法更新

订阅链接加上 unset 参数就可以更新了。

或者直接在浏览器中下下载配置为本地文件,让 clashX 读取本地文件,再添加订阅链接就能更新了。

github 没办法链接

在配置好 ssh key 后发现还是没法链接到 github,运行命令 ssh -T [email protected] 出现下面的报错:

kex_exchange_identification: Connection closed by remote host
Connection closed by 198.18.0.38 port 22

需要手动将下面的配置加到 ~/.ssh/config 文件:

Host github.com
    Hostname ssh.github.com
    Port 443
    User git