如何通过编程方式获取Git将使用的编辑器?
获取Git默认编辑器及实现提交消息专属自定义编辑器
一、如何编程获取Git将使用的编辑器
Git没有内置的git which editor命令,但可以通过git var GIT_EDITOR命令直接获取Git最终会调用的编辑器(完全遵循Git的优先级规则:$GIT_EDITOR > core.editor > $VISUAL > $EDITOR > 系统默认编辑器)。
运行示例:
$ git var GIT_EDITOR /usr/bin/nano
这个命令会返回Git实际要使用的编辑器路径或命令,包括系统自动选择的默认值(比如你的机器上的nano,而非文档里提到的vi),无需硬编码。
二、实现仅编辑提交消息时使用自定义编辑器
核心思路是通过一个中间脚本作为Git的默认编辑器,脚本根据要编辑的文件路径判断是否切换到自定义编辑器:
- 创建一个可执行的shell脚本(比如
git-commit-editor.sh):
#!/bin/bash # 判断当前编辑的是否为Git提交消息文件 if [[ "$1" == */.git/COMMIT_EDITMSG ]]; then # 替换为你的自定义编辑器命令,例如:code --wait、subl -w 等 /path/to/your/custom-editor "$@" else # 调用Git默认编辑器 $(git var GIT_EDITOR) "$@" fi
- 给脚本添加执行权限:
chmod +x git-commit-editor.sh
- 将Git的默认编辑器设置为这个脚本:
# 全局配置(所有仓库生效) git config --global core.editor /full/path/to/git-commit-editor.sh # 或本地仓库配置(仅当前仓库生效) git config --local core.editor /full/path/to/git-commit-editor.sh
这样配置后,当Git需要编辑提交消息(.git/COMMIT_EDITMSG)时会调用你的自定义编辑器,其他场景(如编辑rebase todo、标签消息等)则自动回退到Git默认编辑器。
内容的提问来源于stack exchange,提问作者Sourav Kannantha B
相关产品推荐
相关产品推荐

