git默认编辑器由core.editor配置或git_editor/editor环境变量决定,未配置则回退至vi;设为vim需加-f和set ff=unix参数防卡住,vs code需先安装code命令并加--wait,且环境变量优先级高于配置。

Git 默认编辑器不是靠“启动时选”,而是靠配置 core.editor 或环境变量决定的;不设就 fallback 到系统默认(通常是 vi),很多人卡在提交时弹出 vi 却不会退出,本质是没配好编辑器。
怎么用命令行一次性设成 vim(含常见陷阱)
执行 git config --global core.editor "vim" 看似正确,但实际运行 git commit 时可能报错:E325: ATTENTION 或直接卡住——因为没加 -f(强制前台)和 -c 'set ff=unix'(避免换行符问题)。
- 安全写法是:
git config --global core.editor "vim -f -c 'set ff=unix'" - 如果系统里
vim命令实际指向vim.tiny(如 Ubuntu 最小安装),它不支持-c参数,得先装完整版:sudo apt install vim - Mac 用户注意:
vim默认不带 Python 支持,某些插件会失效,建议用brew install vim --with-python3后再配
VS Code 怎么配成 Git 默认编辑器(Windows/macOS/Linux 全覆盖)
VS Code 不是开箱即用的 Git 编辑器,必须确保已安装命令行工具(code 命令可用),否则 git config --global core.editor "code --wait" 会报 command not found。
- macOS:打开 VS Code →
Cmd+Shift+P→ 输入 “Shell Command” → 选择 “Install ‘code’ command in PATH” - Windows:安装时勾选 “Add to PATH”,或重装并选 “Add to system PATH”;若已装完,可手动把
C:\Users\{user}\AppData\Local\Programs\Microsoft VS Code\bin加进系统环境变量 - Linux(deb/rpm):安装后通常自带
code命令;Arch 用户需装visualstudiocode-binAUR 包才含命令行支持 - 必须加
--wait,否则 Git 会立刻继续执行、把空提交信息当成空内容提交
为什么改了 core.editor 还是弹 vi?检查这三处
Git 编辑器生效顺序是:core.editor 配置 → GIT_EDITOR 环境变量 → EDITOR 环境变量 → 系统默认(vi)。优先级高的会覆盖低的。
- 运行
echo $GIT_EDITOR和echo $EDITOR,如果输出非空,Git 会忽略core.editor - 临时测试:执行
GIT_EDITOR="code --wait" git commit,能弹 VS Code 就说明是环境变量冲突 - 全局配置可能被本地仓库覆盖:进某个 repo 后执行过
git config core.editor "vi",那这个 repo 就永远用vi,得进该目录下删掉.git/config里的[core] editor行
真正麻烦的不是设哪个编辑器,而是不同场景下 Git 调用编辑器的时机不一致:git commit、git rebase -i、git merge(冲突时)、git cherry-pick --edit 都会触发,但有些用 core.editor,有些只认 EDITOR。别指望一个配置打遍天下,遇到异常先 echo $GIT_EDITOR,再看当前目录有没有本地配置。











