2023 款 MBP M2 14 寸个人用指南
2023 年 5 月 23 号晚上 8 点京东开 618 活动,我在什么值得买上找到了 12979 块的 2023 款 MBP M2 14 寸(10 核 + 16 核,16G + 512G)。在这里记录一下全过程。
背景
MBP 是我的主要生产力,一般使用 5 年左右。
上一台是 2018 款 2.6 GHz 六核Intel Core i7 MBP 15 寸(16G + 512G),不小心摔过,电池已经属于建议维修的状态,平时重度使用时(30+ 个浏览器标签页,4 - 8 个 VSCode 窗口,微信,洛雪音乐助手,Docker)会有一些卡顿。
存了挺久的钱,趁着今年 618 换了,争取更好的开发体验。
挑选
我自己做 TypeScript 全栈开发,对于我来说 MBP 最新款最低配就可以用 5 年。
趁着活动(618、双十一、百亿补贴、消费券)买 MBP 一般都会有一些优惠。不用自己比价,什么值得买或者类似应用上会有优惠信息,直接点进去然后确认一下自己要买哪款就行。但一定要快,我下单后不久价钱又回到 13000+ 了。
如果还是有些迷茫,或者觉得很繁琐,可以上淘宝搜 独贩数码正品
,这是一家做了很久而且好评度很高的代购店,可以咨询一下店家。
快递上我只信任顺丰和京东,其它快递都过于暴力了。在下单前可以问问商家发什么快递,多久能到。
我自己手汗很多,所以还另外买了键盘膜。上一台也有键盘膜,合盖之后会在屏幕上留印,所以我还另外买了静电贴附的屏幕膜,避免屏幕涂层损伤。
验货
MBP 本身有一个原装纸盒,商家为了保险起见一般还会再加一个纸盒,上面没有任何 MBP 相关的信息,只有快递单。收到货先检查商家纸盒是否完整,随后和快递员一起拆开商家纸盒,检查一下 MBP 原装纸盒是否完整。接下来就可以拿回家进行进一步的验货了。
进一步的验货在各个社交平台都有完整得多的说明,这里不做过多的叙述。重点是一定要录制开箱和验货视频,对码(四码合一,原装纸盒、白色盒子、说明书、电脑序列号)、查码(官网查询序列号对应信息)、外观是否正常、电池循环次数是否正常(5 次或以下都正常)、音响和摄像头是否正常、屏幕是否存在坏点等。
配置
DNS
验货完可以做进一步的配置。首先设置 DNS,访问家里的路由后台和网关后台,如果可以设置 DNS就直接在上面设置,如果不能就在系统上设置。我自己使用的是 阿里 DNS,国内用 腾讯 DNS 或者 百度 DNS 都不错,国外可以用 Cloudflare DNS、Cisco DNS 或者 Google DNS。
科学上网
下载并安装 ClashX Pro 或 ClashX。我个人更喜欢前者。安装完毕后配置科学上网,方便后续操作。
鉴于 ClashX 已经删库,后续大概率不会再有更新,建议改用 Quantumult X 或 Surge。
文件管理器
下载并安装 QSpace Pro(邀请码 QM7M4K
)。QSpace Pro 是我目前最满意的文件管理器,体验比 Finder 好得多,而且还内置了压缩和解压缩工具。你也可以尝试 Commander One,或者使用 超级右键。
浏览器
Chrome 仍然是我的第一选择。为了避免 Google 重定向,可以访问一下 google.com/ncr。
Chrome 插件
- AdGuard - 屏蔽广告
- BitWarden - 开源密码管理,有桌面应用和移动应用
- Dark Reader - 暗黑模式
- DeepL - 准确的翻译工具
- FasterWeb - 预加载网页
- Gitako - 便捷查看 GitHub
- Lighthouse - 网页性能测试
- React Developer Tools - React 浏览器调试工具
- Refined GitHub - GitHub 优化
- Tampermonkey - 插件工具
- Vue.js devtools - Vue 浏览器调试工具
- Wappalyzer - 网页依赖分析
- Window Resizer - 便捷调整视窗大小
- 哔哩哔哩助手 - B 站优化
- 沉浸式翻译 - 好用的翻译工具
- 稀土掘金 - 开发者资讯
360 极速浏览器 自带 flash 支持,平时可以用来和老婆玩一下黄金矿工。
无法打开应用
sudo spctl --master-disable
sudo xattr -rd com.apple.quarantine /Applications/xxxx.app
效率工具
Raycast 是我目前最喜欢的效率工具,免费版足以应对我的需求,中文支持也不错,同时也有插件商店。
shell 和终端相关
以前我会使用 Homebrew 统一安装和更新大量软件,而现在我更倾向于使用 Homebrew 安装 shell 和终端相关的东西。很重要的一个原因是,很多软件已经集成了升级更新功能,不需要使用 Homebrew 来管理。另一方面,Homebrew 更新后不会重新启动相当烦人。
根据 Homebrew 官网 指引安装 Homebrew,然后再使用 Homebrew 安装 Git。
# 如果需要升级 Homebrew
brew update
# 如果需要升级 Homebrew 安装的包
brew upgrade
# 如果需要清理
brew cleanup --prune=all -q
brew install git git-lfs
git config --global core.autocrlf false # 不转换 CRLF
git config --global core.ignorecase false # 不忽视大小写
git config --global init.defaultBranch main # 默认使用 branch
git config --global remote.origin.prune true # 移除多余分支
git config --global push.autoSetupRemote true # 推送时直接发布新分支
git config --global user.name ModyQyW # 注意不要照抄
git config --global user.email [email protected] # 注意不要照抄
随后使用 Homebrew 安装 zsh-autosuggestions、zsh-fast-syntax-highlighting、autojump,另外根据指引安装 oh-my-zsh,配合起来一起使用。
brew install zsh-fast-syntax-highlighting
brew install zsh-autosuggestions
# 安装 oh-my-zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# 如果需要升级 oh-my-zsh
omz update
修改 oh-my-zsh 的默认主题 ~/.oh-my-zsh/themes/robbyrussell.zsh-theme
,把 %c
换成 %~
以增加当前路径的显示。
修改 zsh 配置文件 ~/.zshrc
,增加插件。
plugins=(autojump git git-auto-fetch git-lfs vscode web-search z)
# zsh-fast-syntax-highlighting/share
source $HOMEBREW_PREFIX/opt/zsh-fast-syntax-highlighting/share/zsh-fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh
# zsh-autosuggestions
source $HOMEBREW_PREFIX/share/zsh-autosuggestions/zsh-autosuggestions.zsh
# autojump
[ -f $HOMEBREW_PREFIX/etc/profile.d/autojump.sh ] && . $HOMEBREW_PREFIX/etc/profile.d/autojump.sh
马上应用设置。
source ~/.zshrc
如果觉得 man
命令展示的说明太复杂,可以使用 tldr。
brew install tldr
开发工具
VSCode 始终是我的首选代码工具。参考 这里 手动增加 code
命令到环境变量。
我的 VSCode 插件
- any-rule - 常见正则
- Auto NPX - 在 VS Code 打开终端时,自动注入
PATH
环境变量 - Code Spell Checker - 拼写检查
- Codeium - 免费 AI 助手,有条件可以使用 GitHub Copilot
- Commit Message Editor - 提交信息编辑器,熟练可以不使用
- Dev Containers - 在 VSCode 里打开 Docker 容器内的任何文件夹或存储库
- Docker - 创建、管理和调试容器化应用程序
- Dotenv Official + Vault - dotenv 官方支持
- EditorConfig for VS Code - EditorConfig 官方支持
- ESLint - ESLint 支持
- Git Graph - 查看 Git 图表,可以在图表中执行 Git 操作
- Git History - 查看 Git 历史,文件历史,比较分支或提交
- Git Line Blame - 行内展示最新提交信息
- GitHub Theme - GitHub 主题
- Goto definition alias - 转到别名重定向后的定义
- i18n Ally - 国际化支持
- Image preview - 图片预览
- LeetCode - LeetCode 支持
- Live Share - 实时协作开发
- Markdown All in One - markdown 支持
- Markdown Preview Enhanced - markdown 预览
- markdownlint - markdownlint 支持
- One Dark Pro - One Dark Pro 主题
- Partial Diff - 比较文本
- Prettier - Prettier 支持
- Pretty TypeScript Errors - 美化 TypeScript 错误
- React Style Helper - 方便在 JSX 中更快速地编写内联样式
- Stylelint - Stylelint 支持
- SVG - SVG 支持
- Thunder Client - 轻量的请求客户端
- Todo Tree - 展示 TODO、FIXME 等注释标签
- TSConfig Helper - tsconfig.json 额外支持
- TypeScript Explorer - 查看变量、组件、函数等的完整类型信息
- uni-highlight - 高亮条件编译代码
- UnoCSS - UnoCSS 支持
- Vitesse Theme - Vitesse 主题
- vscode-faker - 生成假数据
- vscode-icons - 图标支持
- Vue Language Features - Vue 支持
- YAML - YAML 支持
我的 VSCode 配置
{
// 插件 Code Spell Checker 使用,指定语言
"cSpell.language": "en,en-US",
// 插件 Code Spell Checker 使用,指定要检查的语言
"cSpell.enabledLanguageIds": [
"css",
"html",
"javascript",
"javascriptreact",
"json",
"jsonc",
"json5",
"markdown",
"plaintext",
"scss",
"text",
"typescript",
"typescriptreact",
"vue",
"yaml",
"yml",
],
// 插件 Code Spell Checker 使用,避免假阳性
"cSpell.userWords": ["tanstack", "modyqyw", "axios", "stylelint"],
// vscode 自带功能,不校验 css
// 需要和插件 Stylelint 配合使用
"css.validate": false,
// vscode 自带功能,编辑区默认使用 prettier 格式化
// 需要安装插件 Prettier
"editor.defaultFormatter": "esbenp.prettier-vscode",
// vscode 自带功能,指定字体族
// "editor.fontFamily": "Menlo, Monaco, 'Courier New', monospace",
"editor.fontFamily": "Menlo",
// "editor.fontFamily": "Monaco",
// "editor.fontFamily": "LXGW WenKai Mono",
// "editor.fontFamily": "Ubuntu Mono",
// "editor.fontFamily": "Jetbrains Mono",
// "editor.fontFamily": "Source Code Pro",
// "editor.fontFamily": "Fira Code",
// "editor.fontFamily": "Input Mono",
// "editor.fontFamily": "Monaspace Neon",
// vscode 自带功能,保存时自动格式化
"editor.formatOnSave": true,
// vscode 自带功能,允许编辑区成对括号指引线着色
// 不再需要 Bracket Pair Colorizer
"editor.guides.bracketPairs": true,
// vscode 自带功能,自动修改对应的标签名称
// 不再需要 Auto Rename Tag
"editor.linkedEditing": true,
// vscode 自带功能,编辑区 1 个 tab 等于 2 个空格
"editor.tabSize": 2,
// vscode 自带功能,编辑区行太长时自动换行
"editor.wordWrap": "on",
// 插件 ESLint 使用,指定需要 ESLint 校验的语言
"eslint.validate": [
"javascript",
"javascriptreact",
"typescript",
"typescriptreact",
"vue",
"markdown",
"json",
"jsonc",
"yaml",
],
// 插件 ESLint 使用,使用 Flat Config
// "eslint.experimental.useFlatConfig": true,
// vscode 自带功能,设置文件换行为 \n (LF)
"files.eol": "\n",
// vscode 自带功能,指定特定后缀的文件的解析器
// 添加微信小程序、支付宝小程序、百度小程序、头条小程序、wepy 和 uni-app 的支持
// 把一些 json 文件视为 jsonc 文件
"files.associations": {
"*.page-template": "vue",
"*.layout-template": "vue",
"*.vue": "vue",
"*.wxml": "html",
"*.wxs": "javascript",
"*.wxss": "css",
"*.axml": "html",
"*.sjs": "javascript",
"*.acss": "css",
"*.swan": "html",
"*.ttml": "html",
"*.ttss": "css",
"*.jxml": "html",
"*.jxss": "css",
"*.wpy": "vue",
"*.nvue": "vue",
"*.uvue": "vue",
"*.ux": "vue",
"manifest.json": "jsonc",
"pages.json": "jsonc",
"tsconfig.json": "jsonc",
"settings.json": "jsonc",
".env*": "dotenv",
"*.json": "jsonc",
"*.json5": "jsonc",
},
// vscode 自带功能,允许 git 提交不检验
"git.allowNoVerifyCommit": true,
// vscode 自带功能,git 自动 fetch
"git.autofetch": true,
// vscode 自带功能,js 文件移动时自动更新引入
"javascript.updateImportsOnFileMove.enabled": "always",
// 插件 leetcode 使用,编辑器中的快捷操作显示
"leetcode.editor.shortcuts": [
"submit",
"test",
"star",
"solution",
"description",
],
// 插件 leetcode 使用,指定使用 leetcode-cn
"leetcode.endpoint": "leetcode-cn",
// 插件 leetcode 使用,指定文件存放的文件夹
"leetcode.workspaceFolder": "/Users/wurui/Documents/leetcode",
// 插件 leetcode 使用,指定文件默认语言
"leetcode.defaultLanguage": "typescript",
// vscode 自带功能,不校验 scss
// 需要和插件 Stylelint 配合使用
"scss.validate": false,
// 插件 Stylelint 使用,指定需要提示的语言
"stylelint.snippet": ["css", "scss", "vue"],
// 插件 Stylelint 使用,指定需要校验的语言
"stylelint.validate": ["css", "scss", "vue"],
// vscode 自带功能,ts 文件移动时自动更新引入
"typescript.updateImportsOnFileMove.enabled": "always",
// vscode 自带功能,自动切换主题
"window.autoDetectColorScheme": true,
// vscode 自带功能,指定图标主题为 vscode-icons
// 需要安装插件 vscode-icons
"workbench.iconTheme": "vscode-icons",
"workbench.preferredLightColorTheme": "GitHub Light Default",
"workbench.preferredDarkColorTheme": "GitHub Dark Default",
// "workbench.preferredLightColorTheme": "Default Light+",
// "workbench.preferredDarkColorTheme": "Default Dark+",
// "workbench.preferredLightColorTheme": "One Dark Pro Darker",
// "workbench.preferredDarkColorTheme": "One Dark Pro Darker",
// "workbench.preferredLightColorTheme": "Vitesse Light Soft",
// "workbench.preferredDarkColorTheme": "Vitesse Dark Soft",
// vscode 自带功能,控制编辑区在保存文件时的行为
"[javascript][javascriptreact][typescript][typescriptreact][json][jsonc][yaml]": {
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit",
},
},
"[markdown]": {
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit",
"source.fixAll.markdownlint": "explicit",
},
},
"[css][scss]": {
"editor.codeActionsOnSave": {
"source.fixAll.stylelint": "explicit",
},
},
"[vue]": {
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit",
"source.fixAll.stylelint": "explicit",
},
},
}
HBuilderX 相对不太完善,我只在使用 uni-app 开发移动应用时使用它。
我的 HBuilderX 配置
{
"Codegeex.Privacy": true,
"editor.colorScheme": "Atom One Dark",
"editor.fontSize": 13,
"editor.insertSpaces": true,
"editor.tabSize": 2,
"editor.wordWrap": true,
"eslint-js.validateOnDocumentChanged": true,
"eslint-vue.validateOnDocumentChanged": true,
"node.path": "/Users/wurui/Library/Application Support/fnm/aliases/default/bin/node",
"npm.path": "/Users/wurui/Library/Application Support/fnm/aliases/default/bin/npm",
"terminal.type": "外部终端"
}
为了用模拟器调试移动应用,一些额外的开发工具,比如 JDK、Android Studio 和 XCode 等也必不可少。这里我使用的 JDK 是 zulu,这是一个使用 M 芯片编译时有性能优势的 OpenJDK 发行版。
brew install zulu cocoapods gradle watchman
更新 ~/.zshrc
。
export ANDROID_SDK_ROOT=$HOME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools
另外还可能用到 Python。
brew install pyenv
pyenv install 2
更新 ~/.zshrc
。
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
然后再应用 Python 版本。
pyenv system 2.7.18
要开发小程序,小程序开发者工具也是少不了的。我这里装了 微信小程序开发者工具 和 支付宝小程序开发者工具。
Docker 也是必需品。有了 Docker,就不必再在电脑上安装 MongoDB、Nginx 等应用了,而是通过 Docker 来启动、使用这些应用。我使用命令行安装 docker 和 docker-compose 命令,然后再安装 OrbStack 或者 Docker Desktop 作为 GUI。
brew install docker docker-compose
mkdir -p ~/.docker/cli-plugins
ln -sfn $HOMEBREW_PREFIX/opt/docker-compose/bin/docker-compose ~/.docker/cli-plugins/docker-compose
Node.js 也是需要的。我之前使用的是 nvm 来管理版本,现在使用 fnm。fnm 更快,兼容 nvm,而且具有跨平台支持。
brew install fnm
fnm install --lts
fnm default lts-latest
corepack prepare --all --activate
corepack enable
更新 ~/.zshrc
。
# fnm
eval "$(fnm env --use-on-cd --version-file-strategy=recursive --corepack-enabled)"
系统管理
我非常习惯使用开源免费的 Tencent Lemon 来管理我的系统,而且集成了很多有用的功能。有能力的朋友可以去用 Clean My Mac,或者考虑入手付费应用包 Setapp,可以节省不少费用。
办公软件
腾讯全家桶为主,包括 QQ、微信、企业微信、腾讯文档 和 腾讯会议。
另外还安装了 WPS Office 用来本地处理 Word、Excel、PowerPoint 和 PDF,在线处理直接用腾讯文档、飞书文档和 Google Docs。
其它应用
我一般用 Homebrew 来安装和更新字体,开发时看心情更换字体。
brew tap homebrew/cask-fonts
brew install font-fira-code font-input font-jetbrains-mono font-lxgw-wenkai font-monaspace font-source-code-pro font-ubuntu-mono
刘海屏可能会导致菜单栏空间不足,Dozer、hidden、iBar 都可以有效地解决这个问题。
我会使用 百度网盘 和 阿里云盘 来存一些个人资料,也方便同步。iCloud 不太稳定,我不太习惯用它。OneDrive 也是一个不错的选择。
iina 用来看视频。
听歌主要用 洛雪音乐助手。
截图主要使用 snipaste,感兴趣可以看看 iShot。
快捷键提示使用 CheatSheet,感兴趣可以看看 FlyKey。
Rectangle 可以帮我快速放置窗口。
Grammarly 可以帮助修复一些英语语法。
向日葵 和 ToDesk 用于部分情况下远程,一般是远程帮找问题。
如果你不喜欢刘海,务必要看看 LiuHai!
Pake 上还有一些有趣的应用,感兴趣可以看一下。
数据迁移
复制粘贴
我感觉,只要登录了同一个 AppleID,可以在旧 MBP 上复制,然后在新 MBP 上粘贴,非常便捷。
Git
我电脑上大部分都是 Git 项目,所以只要推送到远端之后再克隆就可以很轻松地同步了。
网盘
我借助网盘的力量来同步 ssh 密钥(id_rsa.pub
、id_ed25519.pub
、id_rsa
、id_ed25519
)、文档、图片等不用 Git 管理版本又比较小的的东西。
# 把密钥放到 ~/.ssh 下之后
ssh-add ~/.ssh/id_ed25519
ssh-add ~/.ssh/id_rsa
为了正常使用 rsa 以使用 Azure DevOps(2023 年还不支持 ed25519 的奇葩东西),需要调整一下 ssh 设置。
Host *
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
移动硬盘
一些比较大的东西,比如视频,就只能通过移动硬盘来转移了。
为什么不跟随官方指引迁移
苹果给出了数据迁移的 官方指引,但我压根没有想过跟着做。
我现在这台 MBP 经历了大量安装卸载,有不少冗余的应用数据,我不想把这些数据转移到新 MBP 上。其次,我希望可以重新思考、简化工作流,缩减应用数量。