VSCode 与 zsh 配置沉淀:换电脑也能快速回到手感
本文目录
本机 2026-10-15 只读检查确认使用 zsh 与 Oh My Zsh,主题为 agnoster,当前插件数组有 3 项:git、zsh-autosuggestions 和 zsh-syntax-highlighting。三项均可在公开上游核验:Git 插件提供 Git 别名/函数;autosuggestions 根据历史和补全建议命令;syntax-highlighting 为命令行语法着色。
配置顺序有一个值得整理的点:.zshrc 先在 Oh My Zsh 插件数组启用后两个插件,后面又各自显式 source 一次,存在重复加载风险;显式 source 的 syntax-highlighting 还排在 autosuggestions 前面,而其上游安装说明建议把它作为最后加载的插件。本次仅做静态核对,没有执行或修改 shell 配置。换机时保留一种加载方式,并让语法高亮最后加载;不要把含组织专用命名的配置直接同步到公开仓库。
VS Code 扩展按职责挑选
2026-10-15 的 VS Code 扩展目录有 89 个版本/平台目录;去重后本次仅列出 36 个发布者可明确识别的公开扩展 ID。其余条目没有写入文章,避免把组织专用或无法确认来源的标识发布出去。扩展目录可能残留旧版本;安装前核对发布者、维护状态、权限、许可证和 VS Code 兼容性。
- JavaScript / 前端:
dbaeumer.vscode-eslint、esbenp.prettier-vscode、christian-kohler.path-intellisense、akamud.vscode-javascript-snippet-pack、formulahendry.auto-close-tag、formulahendry.auto-complete-tag、formulahendry.auto-rename-tag、wix.vscode-import-cost;另有ms-vscode.vscode-typescript-next预览版,升级前检查项目兼容性。 - Git:
eamodio.gitlens、mhutchie.git-graph。 - Python / 数据:
ms-python.python、ms-python.vscode-pylance、ms-python.black-formatter、ms-python.debugpy、ms-python.vscode-python-envs、ms-toolsai.jupyter、ms-toolsai.jupyter-keymap、ms-toolsai.jupyter-renderers、ms-toolsai.vscode-jupyter-cell-tags、ms-toolsai.vscode-jupyter-slideshow。 - 容器与远程:
ms-vscode-remote.remote-ssh、ms-vscode-remote.remote-ssh-edit、ms-vscode.remote-explorer、ms-azuretools.vscode-docker、ms-azuretools.vscode-containers。服务器操作使用最小权限账号,workspace task 不内嵌密码。 - 文档与编辑体验:
yzhang.markdown-all-in-one、streetsidesoftware.code-spell-checker、aaron-bond.better-comments、wmaurer.change-case、oderwat.indent-rainbow、naumovs.color-highlight、pkief.material-icon-theme。 - 其他语言与运行:
ms-vscode.cpptools、ms-vscode.test-adapter-converter、formulahendry.code-runner;运行未知仓库脚本前先检查执行内容,谨慎使用一键运行扩展。
同一扩展出现多个目录版本通常是升级残留,不要复制扩展目录迁移。优先用 VS Code Profile 或扩展清单,并只恢复仍在用的工具。
导出、恢复与隔离
有 code 命令时,可把扩展 ID 清单保存到经过审查的 dotfiles 仓库:
code --list-extensions | sort > vscode-extensions.txt
while IFS= read -r extension; do
code --install-extension "$extension"
done < vscode-extensions.txt
也可以用命令面板的 Profiles: Export Profile / Import Profile。Settings Sync 可同步设置、快捷键、片段、任务、扩展和 Profiles;不要默认同步所有类别。MCP 配置、代理、私有扩展和仓库路径先审查。Remote SSH 与容器窗口的扩展安装在远端,VS Code 不会把它们当成本机扩展同步。
打开陌生项目时先用 Restricted Mode,检查 workspace tasks、launch 配置和扩展推荐。AI 扩展可能读取当前工作区;不要在不可信仓库里默认授权完整文件系统、终端或外部连接。
zsh 启动文件分层
- ~/.zshenv:每个 zsh 都会读取,包括非交互脚本。只放极轻量且对脚本也有意义的设置;不要输出文字、访问网络或启动插件。
- ~/.zprofile:登录 shell 的环境设置,例如 macOS 登录 PATH 适配。避免在多个文件里重复拼 PATH。
- ~/.zshrc:交互式 shell 的主题、补全、插件、别名和函数;耗时初始化会拖慢每个新终端。
- ~/.zlogin:登录后的命令,通常很少需要;使用前先理解执行顺序。
主题和 prompt 可能使用特殊符号,字体缺失会造成错位。若用显式 source 安装 zsh-syntax-highlighting,应放在其他插件之后;不要同时用插件数组和重复 source。启动慢时先测基础 shell,再停用插件逐个二分。
alias ll="ls -lah"
alias gs="git status --short --branch"
alias gl="git log --oneline --graph --decorate -20"
alias nr="npm run"
setopt HIST_IGNORE_ALL_DUPS
setopt HIST_SAVE_NO_DUPS
别名不要把 rm、sudo、git push --force 或生产部署包装成无确认快捷键。PATH 修改后用 print -l $path 检查重复项和顺序;shell 脚本不要依赖交互 alias。
Node 与项目环境一致
本机有 Node 与 nvm。两者同时存在时,PATH 顺序决定 node 实际来源;使用 which -a node、node -v、nvm current 一起确认。每个项目只选一套版本管理约定,优先读取 .nvmrc、.node-version、package.json engines 和 packageManager,不要用全局最新版覆盖项目要求。
nvm install
nvm use
node --version
npm --version
遵循仓库指定的包管理器与锁文件,不在同一项目里混用 npm、pnpm 和 yarn。版本文件缺失时先查 CI、README 和部署运行时,再决定要不要补齐。
Git、SSH 与同步安全
- 个人与工作仓库可使用不同 SSH key 和 Host 别名,避免把工作凭据带进个人仓库。
- .gitconfig 可提交经过检查的别名和默认行为;邮箱、签名私钥、代理和 registry 凭据分开管理。
- 用 ssh-add -l 查看 agent 已载入的 key;可检查公钥指纹,但不要打印、截图或发送私钥。
- 同步前搜索 token、password、Authorization、私有主机名和绝对路径;检查 git diff --cached。
- 扩展、AI 插件和 workspace task 可能读取当前项目;共享设备上使用独立 Profile,并收紧工作区信任。
常见问题定位
- zsh 启动慢:检查插件初始化、网络请求和重复 PATH;不要把所有配置搬进 .zshenv。
- 命令找不到:检查 type -a、print -l $path 和登录 shell 文件,不要直接覆盖系统 PATH。
- 格式化不一致:核对项目本地 ESLint/Prettier/Stylelint 和默认 formatter,以仓库配置为准。
- Remote SSH 异常:检查 Host、指纹、目标机空间和远端扩展;不要在编辑器设置里保存登录密码。
- 换机验收:新终端没有重复 PATH;扩展合理;项目可以按锁文件安装、通过测试并选择正确 Node 版本。
官方参考
- VS Code Profiles、Settings Sync、CLI。
- VS Code 终端 Profile:shell 与启动参数。
- zsh 启动文件:shell 模式和文件读取顺序。
- Oh My Zsh:主题与插件框架。只从可信来源安装并审查插件更新。
- Oh My Zsh Git 插件:常用 Git 别名与函数。
- zsh-users/zsh-autosuggestions:基于历史与补全的命令建议,MIT 许可。
- zsh-users/zsh-syntax-highlighting:交互命令行语法高亮;按上游说明放在最后加载。
Live Notes
留言提交后会先进入审核,审核通过后对其他读者公开。