Memo
从零再开始,我的 MacOS 环境搭建
靠着我坚持不懈的蹲守,终于蹲到狗东国补,搞到了一台 Apple M4 芯片、32G 内存的 Mac mini。迫于硬盘容量只有 256G,而我之前的机器磁盘占用都超过了 256G,迁移助理无法比较完整地恢复,只好手动重来一轮,也算自己再严选一次软件了。
基础环境
Homebrew
开始的开始,就是安装一个软件包管理工具。我依然选择 Homebrew。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
我常用的软件
感觉我应该重新挑选一下软件了:
- 截图工具:iShot Pro -> Longshot
两者都是付费买断的。 iShot Pro 在两年前确实好用,但是很长时间没有新功能更新了,原有功能也没有继续迭代。另外比较恶心的就是在菜单列出自家软件的广告,是时候放弃了。
Longshot 只支持新版本的系统,从这点也能猜出来它使用了新的系统 API,使用下来性能感觉会好些(只是感觉,没有太明显的差距)。标注功能和 OCR 比 iShot Pro 好用很多,我体验了十分钟就成为付费用户了,当前价格 ¥ 68。现在的遗憾就是没有贴图历史记录,不知道后续会不会加上。 - 状态栏管理:ice
功能够用,开源的免费软件。可以替代 Bartender 和 iBar。

- 系统状态监控:stats
够用,好看,免费,开源。

- 计算器:Qalculate
强大的计算器,能带单位计算,能换算单位、进制。
有 GUI,下图是在命令行使用。

- 终端模拟器:Warp 我对 Warp 感觉就是拥有最适合图形化界面的终端模拟器,命令行就像代码文本编辑器一样可以使用鼠标调整光标位置,在某些情况下可比用快捷键挪光标要快一些。缓冲区是按命令分块的,往回找之前的命令输出结果轻松很多,尤其是在每个命令输出了很多内容的时候。性能表现也挺不错的,虽然可能比不上原生应用,但是我没感觉到明显差距。至于 AI 功能,体验确实是一流的,不过付费价格有点高,免费用户的额度比较少,我就没开,也不太想依赖这个功能。
- 终端模拟器:Wave Terminal 这款终端模拟器,我用来连接性能不富余的远程服务器。每个服务器一个标签页,标签页内可以自由布局多个 terminal、files 等窗口,作为工作区很合适。最主要的还是他能直接用 GUI 编辑服务器上的文本,图一方便。性能不太行,内存占用也挺大的,但比 VS Code 来说,还算能接受。 是的,条件允许的情况下我会选择用 VS Code 的远程开发方式来连服务器进行操作,就是图方便,是真的方便。不过我遇到过 VS Code 有些扩展出现异常情况卡死服务器,所以也不太敢轻易使用。
brew install biome \ cloc \ cmake \ colima \ croc \ docker \ docker-buildx \ docker-compose \ fontforge \ fx \ git-filter-repo \ git-lfs \ gnu-tar \ gnupg \ go \ graphicsmagick \ htop \ imagemagick \ jq \ libpq \
终端相关
为了省事,我直接把我用的 ~/.zshrc 配置复制一份丢到新机子里。
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
start
export NVM_DIR="/Users/ivan/.nvm"
[ -s "/usr/local/opt/nvm/nvm.sh" ] && \. "/usr/local/opt/nvm/nvm.sh" # This loads nvm
[ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/usr/local/opt/nvm/etc/bash_completion.d/nvm" # This loads nvm bash_completion
# nvm end
# pnpm
export PNPM_HOME="/Users/ivan/Library/pnpm"
case ":$PATH:" in
*":$PNPM_HOME:"*) ;;
*) export PATH="$PNPM_HOME:$PATH" ;;
esac
# pnpm end
### Added by Zinit's installer
if [[ ! -f $HOME/.local/share/zinit/zinit.git/zinit.zsh ]]; then
print -P "%F{33} %F{220}Installing %F{33}ZDHARMA-CONTINUUM%F{220} Initiative Plugin Manager (%F{33}zdharma-continuum/zinit%F{220})…%f"
command mkdir -p "$HOME/.local/share/zinit" && command chmod g-rwX "$HOME/.local/share/zinit"
command git clone https://github.com/zdharma-continuum/zinit "$HOME/.local/share/zinit/zinit.git" && \
print -P "%F{33} %F{34}Installation successful.%f%b" || \
print -P "%F{160} The clone has failed.%f%b"
fi
source "$HOME/.local/share/zinit/zinit.git/zinit.zsh"
autoload -Uz _zinit
(( ${+_comps} )) && _comps[zinit]=_zinit
### End of Zinit's installer chunk
zinit load zsh-users/zsh-syntax-highlighting
zinit load zsh-users/zsh-autosuggestions
zinit load ael-code/zsh-colored-man-pages
export NVM_AUTO_USE=true
zinit load lukechilds/zsh-nvm
zinit ice depth=1; zinit light romkatv/powerlevel10k
zinit load sobolevn/wakatime-zsh-plugin
eval "$(zoxide init zsh)"
# History
HISTFILE=~/.zsh_history
HISTSIZE=100000
HISTFILESIZE=300000
SAVEHIST=10000
setopt INC_APPEND_HISTORY_TIME
setopt EXTENDED_HISTORY
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
export PATH="$(brew --prefix)/opt/python@3.11/libexec/bin:$PATH"
# Colima DockerPWM
export TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=/var/run/docker.sock
export DOCKER_HOST="unix://${HOME}/.colima/default/docker.sock"
# Homebrew
HOMEBREW_AUTO_UPDATE_SECS=86400
ssh-add --apple-use-keychain ~/.ssh/id_ed25519 > /dev/null 2>&1
. "$HOME/.cargo/env"
# Java
export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home
# Android
export ANDROID_HOME=/Users/ivan/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH="/usr/local/opt/libpq/bin:$PATH"
export STM32_PRG_PATH=/Applications/STMicroelectronics/STM32Cube/STM32CubeProgrammer/STM32CubeProgrammer.app/Contents/MacOs/bin
# bun completions
[ -s "/Users/ivan/.bun/_bun" ] && source "/Users/ivan/.bun/_bun"
export STM32CubeMX_PATH=/Applications/STMicroelectronics/STM32CubeMX.app/Contents/Resources
