Skip to content

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 DNSCisco DNS 或者 Google DNS

科学上网

下载并安装 ClashX ProClashX。我个人更喜欢前者。安装完毕后配置科学上网,方便后续操作。

鉴于 ClashX 已经删库,后续大概率不会再有更新,建议改用 Quantumult XSurge

科学上网途径

文件管理器

下载并安装 QSpace Pro(邀请码 QM7M4K)。QSpace Pro 是我目前最满意的文件管理器,体验比 Finder 好得多,而且还内置了压缩和解压缩工具。你也可以尝试 Commander One,或者使用 超级右键

浏览器

Chrome 仍然是我的第一选择。为了避免 Google 重定向,可以访问一下 google.com/ncr

Chrome 插件

360 极速浏览器 自带 flash 支持,平时可以用来和老婆玩一下黄金矿工。

无法打开应用
shell
sudo spctl --master-disable
sudo xattr -rd com.apple.quarantine /Applications/xxxx.app

效率工具

Raycast 是我目前最喜欢的效率工具,免费版足以应对我的需求,中文支持也不错,同时也有插件商店。

你也可以看看 alfredrubickutools

shell 和终端相关

以前我会使用 Homebrew 统一安装和更新大量软件,而现在我更倾向于使用 Homebrew 安装 shell 和终端相关的东西。很重要的一个原因是,很多软件已经集成了升级更新功能,不需要使用 Homebrew 来管理。另一方面,Homebrew 更新后不会重新启动相当烦人。

根据 Homebrew 官网 指引安装 Homebrew,然后再使用 Homebrew 安装 Git

shell
# 如果需要升级 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-autosuggestionszsh-fast-syntax-highlightingautojump,另外根据指引安装 oh-my-zsh,配合起来一起使用。

shell
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,增加插件。

shell
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

马上应用设置。

shell
source ~/.zshrc

如果觉得 man 命令展示的说明太复杂,可以使用 tldr

shell
brew install tldr

开发工具

VSCode 始终是我的首选代码工具。参考 这里 手动增加 code 命令到环境变量。

我的 VSCode 插件
我的 VSCode 配置
jsonc
{
  // 插件 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 配置
json
{
  "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 StudioXCode 等也必不可少。这里我使用的 JDK 是 zulu,这是一个使用 M 芯片编译时有性能优势的 OpenJDK 发行版。

shell
brew install zulu cocoapods gradle watchman

更新 ~/.zshrc

shell
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。

shell
brew install pyenv
pyenv install 2

更新 ~/.zshrc

shell
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

然后再应用 Python 版本。

shell
pyenv system 2.7.18

要开发小程序,小程序开发者工具也是少不了的。我这里装了 微信小程序开发者工具支付宝小程序开发者工具

Docker 也是必需品。有了 Docker,就不必再在电脑上安装 MongoDB、Nginx 等应用了,而是通过 Docker 来启动、使用这些应用。我使用命令行安装 docker 和 docker-compose 命令,然后再安装 OrbStack 或者 Docker Desktop 作为 GUI。

shell
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,而且具有跨平台支持。

shell
brew install fnm
fnm install --lts
fnm default lts-latest
corepack prepare --all --activate
corepack enable

更新 ~/.zshrc

shell
# 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。

作图会考虑 ProcessOndraw.io

其它应用

我一般用 Homebrew 来安装和更新字体,开发时看心情更换字体。

shell
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

刘海屏可能会导致菜单栏空间不足,DozerhiddeniBar 都可以有效地解决这个问题。

我会使用 百度网盘阿里云盘 来存一些个人资料,也方便同步。iCloud 不太稳定,我不太习惯用它。OneDrive 也是一个不错的选择。

iina 用来看视频。

听歌主要用 洛雪音乐助手

截图主要使用 snipaste,感兴趣可以看看 iShot

快捷键提示使用 CheatSheet,感兴趣可以看看 FlyKey

Rectangle 可以帮我快速放置窗口。

Grammarly 可以帮助修复一些英语语法。

向日葵ToDesk 用于部分情况下远程,一般是远程帮找问题。

如果你不喜欢刘海,务必要看看 LiuHai

Pake 上还有一些有趣的应用,感兴趣可以看一下。

数据迁移

复制粘贴

我感觉,只要登录了同一个 AppleID,可以在旧 MBP 上复制,然后在新 MBP 上粘贴,非常便捷。

Git

我电脑上大部分都是 Git 项目,所以只要推送到远端之后再克隆就可以很轻松地同步了。

网盘

我借助网盘的力量来同步 ssh 密钥(id_rsa.pubid_ed25519.pubid_rsaid_ed25519)、文档、图片等不用 Git 管理版本又比较小的的东西。

shell
# 把密钥放到 ~/.ssh 下之后
ssh-add ~/.ssh/id_ed25519
ssh-add ~/.ssh/id_rsa

为了正常使用 rsa 以使用 Azure DevOps(2023 年还不支持 ed25519 的奇葩东西),需要调整一下 ssh 设置。

shell
Host *
    HostkeyAlgorithms +ssh-rsa
    PubkeyAcceptedAlgorithms +ssh-rsa

移动硬盘

一些比较大的东西,比如视频,就只能通过移动硬盘来转移了。

为什么不跟随官方指引迁移

苹果给出了数据迁移的 官方指引,但我压根没有想过跟着做。

我现在这台 MBP 经历了大量安装卸载,有不少冗余的应用数据,我不想把这些数据转移到新 MBP 上。其次,我希望可以重新思考、简化工作流,缩减应用数量。

Released under the MIT License.