我的 2025 年开发设置

经过多年的调整和优化,我最终确定了一套既能最大程度提升效率又能提升乐趣的开发配置。以下是我在 2025 年会使用的配置,希望能为其他开发者提供一些参考。

硬件

主机

MacBook Pro 13 英寸 (M1, 2020)

软件堆栈

终端与 Shell

终端Ghostty

Shell:Zsh + Oh My Zsh

安装 Oh My Zsh 和 插件:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting
source ~/.zshrc

.zshrc 配置:

# Oh My Zsh 配置
export ZSH="$HOME/.oh-my-zsh"
ZSH_THEME="muse" #random
# 插件
plugins=(
git
mvn
zsh-autosuggestions
zsh-syntax-highlighting
docker
kubectl
)
source $ZSH/oh-my-zsh.sh
# 加载 SDKMAN
[[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh"
# 自定义环境变量
export EDITOR=vim
export LANG=en_US.UTF-8
# 开发工具路径
export JAVA_HOME="$HOME/.sdkman/candidates/java/current"
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
# 加载 fnm
eval "$(fnm env --use-on-cd)"

代码编辑器

主要编辑器IntelliJ IDEA Ultimate

必备插件

常用快捷键

备用编辑器

浏览器与扩展

主浏览器:Google Chrome

必备扩展

版本控制

Git 配置

我使用条件配置来区分个人和工作项目:

.gitconfig

[core]
editor = vim
pager = cat
autocrlf = true
eol = lf
safecrlf = false
[alias]
st = status
di = diff
co = checkout
ci = commit
cl = clone
cp = cherry-pick
br = branch
last = log -1 HEAD
unstage = reset HEAD --
# 美化日志显示
lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
[rebase]
autosquash = true
[init]
defaultBranch = main
[pull]
ff = only
[rerere]
enabled = true
[http]
postBuffer = 5242880000
[http "https://github.com"]
proxy = socks5://127.0.0.1:7890
[https "https://github.com"]
proxy = socks5://127.0.0.1:7890
[credential]
helper = osxkeychain
# 条件配置:根据目录自动切换用户信息
[includeIf "gitdir:~/development/personal/"]
path = .gitconfig-personal
[includeIf "gitdir:~/development/work/"]
path = .gitconfig-work

.gitconfig-personal

[user]
name = chensoul
email = ichensoul@gmail.com

.gitconfig-work

[user]
name = chensoul
email = work@company.com

常用 Git 技巧

# 清空提交历史(谨慎使用)
DEFAULT=main
git checkout --orphan latest_branch
git add -A
git commit -am "refactor: init"
git branch -D $DEFAULT
git branch -m $DEFAULT
git push -f origin $DEFAULT
# 批量修改提交历史的用户信息
brew install git-filter-repo
git-filter-repo --email-callback 'return email.replace(b"old@email.com", b"new@email.com")' --force
# 交互式 rebase 最近 3 次提交
git rebase -i HEAD~3
# 暂存部分文件内容
git add -p
# 查看文件修改历史
git log -p filename

云存储与同步

主要云盘

开发工具

语言和运行时

Java 开发环境

使用 SDKMAN 管理 Java 版本和相关工具:

# 安装 SDKMAN
brew install sdkman/tap/sdkman-cli
source "$HOME/.sdkman/bin/sdkman-init.sh"
# 安装 Java 和构建工具
sdk install java 21.0.1-tem
sdk install maven
sdk install mvnd # Maven Daemon,更快的构建
sdk install gradle
sdk install springboot

Go 开发环境

# 通过 Homebrew 安装
brew install go
# 设置 Go 环境变量
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
# 安装常用工具
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
go install golang.org/x/tools/cmd/goimports@latest
go install github.com/air-verse/air@latest # 热重载工具

Node.js 开发环境

使用 fnm (Fast Node Manager) 管理 Node.js 版本:

# 安装 fnm
brew install fnm
# 安装和使用 LTS 版本
fnm install --lts
fnm use lts-latest
fnm default lts-latest
# 全局包
npm install -g typescript
npm install -g @vercel/ncc
npm install -g prettier
npm install -g eslint
npm install -g pnpm # 更快的包管理器

Python 开发环境

# 通过 Homebrew 安装 Python
brew install python@3.12
# 安装 pipx 用于全局工具
brew install pipx
# 安装常用工具
pipx install poetry # 依赖管理
pipx install black # 代码格式化
pipx install ruff # 快速 linter

容器与编排

OrbStack - Docker Desktop 的现代替代品

Kubernetes 工具

# 安装 kubectl 和相关工具
brew install kubectl
brew install kubectx # 快速切换 context
brew install k9s # 终端 UI 管理工具
brew install helm # 包管理器
# 有用的别名
alias k="kubectl"
alias kgp="kubectl get pods"
alias kgs="kubectl get services"
alias kgd="kubectl get deployments"
alias kctx="kubectx" # 切换集群
alias kns="kubens" # 切换命名空间

数据库工具

TablePlus - 现代数据库客户端

Redis 管理

API 开发与测试

Insomnia - REST/GraphQL 客户端

HTTPie - 命令行 HTTP 客户端

brew install httpie
# 使用示例
http GET https://api.github.com/user Authorization:"token YOUR_TOKEN"
http POST https://api.example.com/data name="John" age:=30

现代开发工具

Raycast - 启动器和生产力工具

Fig - 终端自动补全

安全与隐私工具

1Password - 密码管理器

SwitchHosts - Hosts 文件管理

监控与调试工具

Activity Monitor - 系统监控

Console - 系统日志查看

Network Link Conditioner - 网络模拟

生产力工具

笔记记录与文档

Typora - Markdown 编辑器

Apple Notes - 快速记录

GitHub/GitLab - 代码文档

常用 Alias 命令

alias c='clear'
alias h='history'
alias f='open -a Finder ./'
alias p='cd ~/chensoul/Projects/'
alias s='source'
alias my='sudo chown -R `id -u`'
alias path='echo -e ${PATH//:/\\n}'
alias ll='ls -la'
alias .='pwd'
alias ..='cd ../..'
alias ...='cd /'
alias ....='cd /../'
alias ~="cd ~"
alias dl="cd ~/Downloads"
alias dt="cd ~/Desktop"
alias publicip="dig +short myip.opendns.com @resolver1.opendns.com"
alias localip="ipconfig getifaddr en0"
alias ifactive="ifconfig | pcregrep -M -o '^[^\t:]+:([^\n]|\n\t)*status: active'"
alias delTrash="find . \( -name target -o -name .DS_Store -o -name build -o -name node_modules \) -type d -ls -delete"
alias update='sudo softwareupdate -i -a; brew update; brew upgrade; brew cleanup;'
alias pullcode='for dir in */; do if [[ -d "$dir/.git" ]]; then echo "Entering directory: $dir"; cd "$dir"; git pull; cd ..; fi; done'
alias tree="find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'"
alias listnm="find . -name "node_modules" -type d -prune -print | xargs du -chs"
### Git
alias git_current_branch="git symbolic-ref -q HEAD | sed -e 's|^refs/heads/||'"
alias gaa='git add -A'
alias gs='git status'
alias gst='git status'
alias gcm='git commit -m'
alias gcl='git clone'
alias gp='git pull'
alias gg='git push origin "$(git_current_branch)"'
alias gfwork='for dir in */; do if [[ -d "$dir/.git" ]]; then cd "$dir" && git config user.name "$WORK_USER" && git config user.email "$WORK_EMAIL" && echo "✅ 配置成功: $dir" || echo "❌ 配置失败: $dir"; cd - >/dev/null; fi; done'
### DEVELOPMENT
alias mw='./mvnw'
alias mwcv='./mvnw clean verify'
alias yi='yarn install'
alias ys='yarn start'
alias d="docker"
alias dc="docker compose"
alias dclean="docker ps -aq --no-trunc -f status=exited | xargs docker rm"
alias dstop="docker ps -aq | xargs docker stop"
# delete docker images by created date
#docker image prune -a --force --filter "until=7h"
#search docker images by name
#docker images | awk '/^spring/ {print $0}'
#delete docker images by name
#docker images | awk '/^chensoul/ {print $3}' | xargs docker rmi
alias hg='hogo server && open http://localhost:1313/'
#k8s
alias k='kubectl'
alias kget='k get all'
alias klogs='k logs'
alias mk='minikube'
alias mkdb='mk dashboard'
### function
function mkd() { mkdir -p "$@" && cd "$_"; }
function killport() { lsof -i tcp:"$*" | awk 'NR!=1 {print $2}' | xargs kill -9 ;}
# https://github.com/thanhdevapp/jetbrains-reset-trial-evaluation-mac/blob/master/runme.sh
function clean_idea(){
rm -rf /Applications/IntelliJ\ IDEA.app
rm -rf ~/Library/Application\ Support/JetBrains/
rm -rf ~/Library/Preferences/com.apple.java.util.prefs.plist
rm -rf ~/Library/Preferences/com.jetbrains*
rm -rf ~/Library/Preferences/jetbrains*
rm -rf ~/Library/Caches/JetBrains
rm -rf ~/Library/Logs/JetBrains/
rm -rf ~/Library/Saved\ Application\ State/com.jetbrains.intellij.savedState/
rm -rf ~/.cache/JetBrains/
rm -rf ~/.config
# Flush preference cache
killall cfprefsd
}
function maintenance(){
echo "🧹 开始系统维护..."
echo "📦 更新 Homebrew..."
brew update && brew upgrade && brew cleanup
echo "🗑️ 清理系统缓存..."
sudo rm -rf /System/Library/Caches/* /Library/Caches/* ~/Library/Caches/*
sudo npm cache clean --force 2>/dev/null || true
sudo yarn cache clean 2>/dev/null || true
sudo go clean -cache 2>/dev/null || true
echo "🔍 重建 Spotlight 索引..."
sudo mdutil -E /
echo "✅ 系统维护完成!"
}

软件管理

Homebrew - macOS 包管理器

安装 Homebrew:

# 安装 Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 配置环境变量(Apple Silicon Mac)
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

使用 Brewfile 管理软件包:

tap "homebrew/bundle"
tap "homebrew/services", "https://mirrors.ustc.edu.cn/homebrew-services.git"
# 开发工具
brew "git"
brew "vim"
brew "curl"
brew "wget"
brew "jq"
brew "gh"
brew "go-task" #taskfile
brew "tree"
brew "htop"
brew "fastfetch"
brew "fnm" # node 版本管理
brew "uv"
brew "ollama"
brew "pandoc"
brew "pipx"
brew "pnpm"
brew "pyenv"
brew "sdkman/tap/sdkman-cli"
brew "spring-io/tap/spring-boot"
# 语言和运行时
brew "go"
brew "python@3.12"
brew "rustup"
# Java 通过 SDKMAN 管理,不在这里安装
# 容器和云工具
brew "kubectl"
brew "kubectx"
brew "k9s"
brew "helm"
brew "docker"
# 网络工具
brew "httpie"
brew "nmap"
# 文件处理
brew "rename"
brew "findutils"
brew "coreutils"
brew "moreutils"
# GUI 应用
cask "1password"
cask "google-chrome"
cask "insomnia"
cask "intellij-idea"
cask "input-source-pro"
cask "orbstack"
cask "switchhosts"
cask "typora"
cask "ghostty"
cask "tinypng4mac"
cask "picgo"
# 通讯和办公
cask "wechat"
cask "feishu"
# 云存储
brew "aliyunpan"
cask "baidunetdisk"

批量安装:

# 安装所有软件包
brew bundle
# 更新所有软件包
brew update && brew upgrade && brew cleanup

SDKMAN - Java 生态工具管理

App Store 应用管理

# 安装 mas (Mac App Store CLI)
brew install mas
# 列出已安装的应用
mas list
# 搜索应用
mas search "Xcode"
# 安装应用
mas install 497799835 # Xcode

代码组织

~/development/
├── personal/ # Personal projects
├── work/ # Work-related projects
├── learning/ # Tutorials and experiments
├── tools/ # Custom scripts and utilities
└── archived/ # Completed/deprecated projects

环境配置

SSH 配置

生成和配置 SSH 密钥:

# 生成 SSH 密钥(推荐使用 ed25519)
ssh-keygen -t ed25519 -C "ichensoul@gmail.com"
# 添加到 SSH agent
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
# 复制公钥到剪贴板
pbcopy < ~/.ssh/id_ed25519.pub

SSH 配置文件 ~/.ssh/config

Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519
UseKeychain yes
AddKeysToAgent yes
Host gitlab.com
HostName gitlab.com
User git
IdentityFile ~/.ssh/id_ed25519
UseKeychain yes
AddKeysToAgent yes

备份策略

多层备份方案

  1. 代码和配置

    • Git 仓库托管在 GitHub/GitLab
    • dotfiles 仓库管理配置文件
    • 定期推送到远程仓库
  2. 文档和项目文件

    • iCloud Drive 实时同步
    • Time Machine 本地备份
    • 重要文件额外备份到外部存储
  3. 系统备份

    • Time Machine 每小时自动备份
    • 每月创建系统快照
    • 重要软件列表(Brewfile)版本控制
  4. 数据库和配置

    • 数据库定期导出
    • 应用配置文件备份
    • SSH 密钥和证书安全存储

性能优化

macOS 系统优化

基础性能调整

# 设置计算机名称
sudo scutil --set ComputerName "chensoul-mac"
sudo scutil --set HostName "chensoul-mac"
sudo scutil --set LocalHostName "chensoul-mac"
# 设置时区
sudo systemsetup -settimezone "Asia/Shanghai"
# 取消 4 位数密码限制
sudo pwpolicy -clearaccountpolicies
# 允许安装任意来源的应用
sudo spctl --master-disable
# 加快键盘重复速度
defaults write NSGlobalDomain KeyRepeat -int 1
defaults write NSGlobalDomain InitialKeyRepeat -int 10
# 显示滚动条
defaults write NSGlobalDomain AppleShowScrollBars -string "WhenScrolling"
# 禁用不必要的动画
defaults write com.apple.dock launchanim -bool false
defaults write NSGlobalDomain NSAutomaticWindowAnimationsEnabled -bool false
defaults write com.apple.dock expose-animation-duration -float 0.1
# 加快 Mission Control 动画
defaults write com.apple.dock expose-animation-duration -float 0.1
# 禁用窗口缩放动画
defaults write NSGlobalDomain NSAutomaticWindowAnimationsEnabled -bool false
# 加快对话框显示速度
defaults write NSGlobalDomain NSWindowResizeTime -float 0.001
# 重启相关服务
killall Dock
killall Finder

Finder 优化

# 显示隐藏文件
defaults write com.apple.finder AppleShowAllFiles -bool true
# 显示文件扩展名
defaults write NSGlobalDomain AppleShowAllExtensions -bool true
# 显示路径栏
defaults write com.apple.finder ShowPathbar -bool true
# 显示状态栏
defaults write com.apple.finder ShowStatusBar -bool true
# 默认搜索当前文件夹
defaults write com.apple.finder FXDefaultSearchScope -string "SCcf"
# 禁用创建 .DS_Store 文件
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true
defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true

开发环境优化

Git 性能优化

# 启用文件系统缓存
git config --global core.fscache true
# 启用预加载索引
git config --global core.preloadindex true
# 设置自动垃圾回收
git config --global gc.auto 256
# 启用并行处理
git config --global core.parallel 8
# 优化网络传输
git config --global http.postBuffer 524288000

Node.js 性能优化

# 增加内存限制
export NODE_OPTIONS="--max-old-space-size=8192"
# 启用 V8 优化
export NODE_OPTIONS="$NODE_OPTIONS --optimize-for-size"

Java 性能优化

# JVM 参数优化
export JAVA_OPTS="-Xms1g -Xmx1g -XX:+UseG1GC -XX:+UseStringDeduplication"
# Maven 性能优化
export MAVEN_OPTS="-Xms1g -Xmx4g -XX:+TieredCompilation -XX:TieredStopAtLevel=1"

文件监控限制调整

# 增加文件监控限制(适用于大型项目)
echo kern.maxfiles=65536 | sudo tee -a /etc/sysctl.conf
echo kern.maxfilesperproc=65536 | sudo tee -a /etc/sysctl.conf

工作流程

日常开发流程

  1. 项目启动

    • 使用 code .idea . 打开项目
    • 检查 Git 状态和分支
    • 启动必要的服务(数据库、Redis 等)
  2. 开发过程

    • 使用 Git Flow 进行分支管理
    • 频繁提交,清晰的提交信息
    • 定期推送到远程仓库
  3. 测试和部署

    • 本地测试通过后创建 PR
    • CI/CD 自动化测试和部署
    • 代码审查和合并

学习和实验

学习新技术的流程

  1. ~/development/learning/ 创建实验项目
  2. 使用 Docker 隔离环境
  3. 记录学习笔记
  4. 整理成博客文章发布

结论

这套开发设置是经过多年实践和不断优化的结果,重点关注以下几个方面:

核心原则

  1. 效率优先:选择能显著提升开发效率的工具
  2. 稳定可靠:优先选择成熟稳定的解决方案
  3. 可维护性:配置文件版本控制,便于迁移和恢复
  4. 自动化:尽可能自动化重复性任务
  5. 持续改进:定期评估和更新工具链

关键收获

未来展望

随着技术的发展,这套配置也会持续演进:

记住:最好的开发设置是那些让你忘记工具存在,专注于创造价值的设置


📧 反馈:如果你有任何建议或问题,欢迎通过 GitHub Issues 或邮件 ichensoul@gmail.com 联系我。

Spring AI 和聊天模型入门
ThingsBoard接口设计