我的 2025 年开发设置
经过多年的调整和优化,我最终确定了一套既能最大程度提升效率又能提升乐趣的开发配置。以下是我在 2025 年会使用的配置,希望能为其他开发者提供一些参考。
硬件
主机
MacBook Pro 13 英寸 (M1, 2020)
- 16GB 统一内存
- 256GB SSD 存储
- 8 核 CPU,8 核 GPU
- 选择理由:M1 芯片的能效比出色,续航时间长,对于日常开发工作完全够用,性价比很高
软件堆栈
终端与 Shell
终端:Ghostty
- 基于 GPU 加速的现代终端模拟器
- 启动速度极快,内存占用低
- 原生 macOS 集成,支持 Metal 渲染
- 配置简单,性能优异
- 选择理由:相比 iTerm2 更快更轻量,相比 Alacritty 配置更简单
Shell:Zsh + Oh My Zsh
- 强大的自动补全功能
- 丰富的插件生态系统
- 主题定制化程度高
- 推荐插件:
git,zsh-autosuggestions,zsh-syntax-highlighting
安装 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-autosuggestionsgit clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlightingsource ~/.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=vimexport LANG=en_US.UTF-8
# 开发工具路径export JAVA_HOME="$HOME/.sdkman/candidates/java/current"export GOPATH=$HOME/goexport PATH=$PATH:$GOPATH/bin
# 加载 fnmeval "$(fnm env --use-on-cd)"代码编辑器
主要编辑器:IntelliJ IDEA Ultimate
必备插件:
- .ignore - Git 忽略文件管理
- GitToolBox - Git 集成增强,显示 blame 信息
- Rainbow Brackets - 彩色括号匹配,提高代码可读性
- String Manipulation - 字符串处理工具集
- Key Promoter X - 快捷键学习助手
- Lombok - Java 代码简化
- SonarLint - 实时代码质量检查
- Atom Material Icons - 主题
- Mermaid - Mermaid 图
- Switch2Cursor
常用快捷键:
- 格式化代码:
⌥ + ⌘ + L - 组织导入:
⌃ + ⌥ + O - 移动代码:
⌃ + ⌘ + ↑/↓ - 展开/折叠方法:
⌘ + +/- - 扩展选择:
⌥ + ↑ - 缩小选择:
⌥ + ↓ - 提取到变量:
⌘ + ⌥ + V - 提取到方法:
⌘ + ⌥ + M - 文件结构:
⌘ + F12 - 最近文件:
⌘ + E - 全局搜索:
⌘ + ⇧ + F
备用编辑器:
- Cursor - AI 驱动的代码编辑器,适合快速原型开发
- Trae
- Augment
- Qoder
浏览器与扩展
主浏览器:Google Chrome
必备扩展:
- 1Password - 密码管理,安全便捷
- uBlock Origin - 广告拦截,提升浏览体验
- JSON Viewer - JSON 格式化和高亮
- Wappalyzer - 技术栈识别
- Postman Interceptor - API 测试辅助
版本控制
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=maingit checkout --orphan latest_branchgit add -Agit commit -am "refactor: init"git branch -D $DEFAULTgit branch -m $DEFAULTgit push -f origin $DEFAULT
# 批量修改提交历史的用户信息brew install git-filter-repogit-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云存储与同步
主要云盘:
- 阿里云盘 - 大文件存储,速度快
- 百度云盘 - 大文件存储,速度快
- iCloud Drive - 系统集成度高,文档同步
- GitHub - 代码和配置文件版本控制
开发工具
语言和运行时
Java 开发环境
使用 SDKMAN 管理 Java 版本和相关工具:
# 安装 SDKMANbrew install sdkman/tap/sdkman-clisource "$HOME/.sdkman/bin/sdkman-init.sh"
# 安装 Java 和构建工具sdk install java 21.0.1-temsdk install mavensdk install mvnd # Maven Daemon,更快的构建sdk install gradlesdk install springbootGo 开发环境
# 通过 Homebrew 安装brew install go
# 设置 Go 环境变量export GOPATH=$HOME/goexport PATH=$PATH:$GOPATH/bin
# 安装常用工具go install github.com/golangci/golangci-lint/cmd/golangci-lint@latestgo install golang.org/x/tools/cmd/goimports@latestgo install github.com/air-verse/air@latest # 热重载工具Node.js 开发环境
使用 fnm (Fast Node Manager) 管理 Node.js 版本:
# 安装 fnmbrew install fnm
# 安装和使用 LTS 版本fnm install --ltsfnm use lts-latestfnm default lts-latest
# 全局包npm install -g typescriptnpm install -g @vercel/nccnpm install -g prettiernpm install -g eslintnpm install -g pnpm # 更快的包管理器Python 开发环境
# 通过 Homebrew 安装 Pythonbrew install python@3.12
# 安装 pipx 用于全局工具brew install pipx
# 安装常用工具pipx install poetry # 依赖管理pipx install black # 代码格式化pipx install ruff # 快速 linter容器与编排
OrbStack - Docker Desktop 的现代替代品
- 更快的启动速度和更低的资源占用
- 原生 macOS 集成
- 支持 Linux 虚拟机
- 选择理由:比 Docker Desktop 更轻量,性能更好
Kubernetes 工具
# 安装 kubectl 和相关工具brew install kubectlbrew install kubectx # 快速切换 contextbrew 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 - 现代数据库客户端
- 支持多种数据库:MySQL, PostgreSQL, SQLite, Redis 等
- 美观的界面和优秀的用户体验
- 强大的查询编辑器和数据可视化
- 支持 SSH 隧道和 SSL 连接
Redis 管理:
- RedisInsight - Redis 官方 GUI 工具
- Medis - 轻量级 Redis 客户端
API 开发与测试
Insomnia - REST/GraphQL 客户端
- 简洁的界面设计
- 强大的环境变量管理
- 支持 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 - 启动器和生产力工具
- 替代 Spotlight 的强大启动器
- 丰富的插件生态系统
- 快速访问常用功能和信息
- 推荐插件:GitHub、Jira、Brew、System Monitor
Fig - 终端自动补全
- 智能命令行补全
- 可视化参数提示
- 支持 500+ CLI 工具
- 注意:已被 AWS 收购,功能整合中
安全与隐私工具
1Password - 密码管理器
- 强密码生成和存储
- 多设备同步
- 浏览器集成
- SSH 密钥管理
SwitchHosts - Hosts 文件管理
- 快速切换不同的 hosts 配置
- 支持远程 hosts 文件
- 适合开发环境切换
监控与调试工具
Activity Monitor - 系统监控
- 查看 CPU、内存、网络使用情况
- 进程管理
Console - 系统日志查看
- 实时查看系统和应用日志
- 调试应用问题
Network Link Conditioner - 网络模拟
- 模拟不同网络条件
- 测试应用在弱网环境下的表现
生产力工具
笔记记录与文档
Typora - Markdown 编辑器
- 所见即所得的 Markdown 编辑
- 支持数学公式、图表
- 主题丰富,导出格式多样
- 选择理由:最优雅的 Markdown 编辑体验
Apple Notes - 快速记录
- 系统原生,同步快速
- 支持手写、绘图
- 适合临时想法记录
GitHub/GitLab - 代码文档
- README 文档
- Wiki 页面
- Issue 和 PR 讨论
常用 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"
### Gitalias 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'
### DEVELOPMENTalias 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/'
#k8salias k='kubectl'alias kget='k get all'alias klogs='k logs'
alias mk='minikube'alias mkdb='mk dashboard'
### functionfunction 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.shfunction 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)"' >> ~/.zprofileeval "$(/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" #taskfilebrew "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 cleanupSDKMAN - Java 生态工具管理
- 管理多个 Java 版本
- 安装 Maven、Gradle、Spring Boot CLI 等工具
- 简单的版本切换
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 agenteval "$(ssh-agent -s)"ssh-add ~/.ssh/id_ed25519
# 复制公钥到剪贴板pbcopy < ~/.ssh/id_ed25519.pubSSH 配置文件 ~/.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备份策略
多层备份方案:
代码和配置:
- Git 仓库托管在 GitHub/GitLab
- dotfiles 仓库管理配置文件
- 定期推送到远程仓库
文档和项目文件:
- iCloud Drive 实时同步
- Time Machine 本地备份
- 重要文件额外备份到外部存储
系统备份:
- Time Machine 每小时自动备份
- 每月创建系统快照
- 重要软件列表(Brewfile)版本控制
数据库和配置:
- 数据库定期导出
- 应用配置文件备份
- 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 1defaults write NSGlobalDomain InitialKeyRepeat -int 10
# 显示滚动条defaults write NSGlobalDomain AppleShowScrollBars -string "WhenScrolling"
# 禁用不必要的动画defaults write com.apple.dock launchanim -bool falsedefaults write NSGlobalDomain NSAutomaticWindowAnimationsEnabled -bool falsedefaults 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 Dockkillall FinderFinder 优化:
# 显示隐藏文件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 truedefaults 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 524288000Node.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.confecho kern.maxfilesperproc=65536 | sudo tee -a /etc/sysctl.conf工作流程
日常开发流程
项目启动:
- 使用
code .或idea .打开项目 - 检查 Git 状态和分支
- 启动必要的服务(数据库、Redis 等)
- 使用
开发过程:
- 使用 Git Flow 进行分支管理
- 频繁提交,清晰的提交信息
- 定期推送到远程仓库
测试和部署:
- 本地测试通过后创建 PR
- CI/CD 自动化测试和部署
- 代码审查和合并
学习和实验
学习新技术的流程:
- 在
~/development/learning/创建实验项目 - 使用 Docker 隔离环境
- 记录学习笔记
- 整理成博客文章发布
结论
这套开发设置是经过多年实践和不断优化的结果,重点关注以下几个方面:
核心原则
- 效率优先:选择能显著提升开发效率的工具
- 稳定可靠:优先选择成熟稳定的解决方案
- 可维护性:配置文件版本控制,便于迁移和恢复
- 自动化:尽可能自动化重复性任务
- 持续改进:定期评估和更新工具链
关键收获
- 工具选择:不追求最新,而是选择最适合的
- 配置管理:所有配置文件都应该版本控制
- 备份策略:多层备份,确保数据安全
- 性能优化:系统级和应用级的双重优化
- 工作流程:标准化的开发流程提高团队协作效率
未来展望
随着技术的发展,这套配置也会持续演进:
- 关注 AI 辅助开发工具的集成
- 探索更高效的容器化开发环境
- 优化远程开发和协作工具
- 持续改进自动化脚本和工作流程
记住:最好的开发设置是那些让你忘记工具存在,专注于创造价值的设置。
📧 反馈:如果你有任何建议或问题,欢迎通过 GitHub Issues 或邮件 ichensoul@gmail.com 联系我。