如何全局配置 git 以使用特定编辑器(例如 vim
)来提交消息?
设置 Git 的默认编辑器
选一个:
在你的 Git 配置中设置 core.editor: git config --global core.editor "vim"
设置 GIT_EDITOR 环境变量:export GIT_EDITOR=vim
为所有程序设置默认编辑器
设置标准化的 VISUAL
和 EDITOR
环境变量*:
export VISUAL=vim
export EDITOR="$VISUAL"
注意: 不一定需要同时设置两者,但某些程序可能不会使用更正确的 VISUAL
。请参阅VISUAL
vs. EDITOR
。
修复兼容性问题
一些编辑器需要一个 --wait
标志,否则他们会打开一个空白页面。例如:
Sublime Text(如果设置正确;或使用可执行文件的完整路径代替 subl):export VISUAL="subl --wait"
VS Code(添加 shell 命令后):export VISUAL="code --wait"
跑:
git config --global core.editor "vim"
从 man git-commit
:
环境和配置变量 用于编辑提交日志消息的编辑器将从 GIT_EDITOR 环境变量、core.editor 配置变量、VISUAL 环境变量或 EDITOR 环境变量(按此顺序)中选择。
VISUAL
或 EDITOR
,但他们肯定不会使用 GIT_EDITOR
或 core.editor
。
在 Ubuntu 和 Debian(感谢@MichielB)上,也可以通过运行以下命令更改默认编辑器:
sudo update-alternatives --config editor
这将提示以下内容:
There are 4 choices for the alternative editor (providing /usr/bin/editor).
Selection Path Priority Status
------------------------------------------------------------
0 /bin/nano 40 auto mode
1 /bin/ed -100 manual mode
2 /bin/nano 40 manual mode
* 3 /usr/bin/vim.basic 30 manual mode
4 /usr/bin/vim.tiny 10 manual mode
Press enter to keep the current choice[*], or type selection number:
alternatives
系统是管理受支持程序类型的默认值的一种更简单的方法。供参考:debian-administration.org/article/91/…
GIT_EDITOR
和 EDITOR
无效 --ubuntu
update-alternatives
将显示所有已安装的编辑器。 Koen 只是没有安装 Emacs。
在 Windows 7 中,在添加“Sublime”编辑器时它仍然给我一个错误:
由于提交消息为空而中止提交。
Sublime 无法保持焦点。
为了解决这个问题,我在 c:/users/username/ 文件夹中打开了 .gitconfig 文件,并在单引号之外添加了以下带有 --wait 选项的行。
[core]
editor = 'F:/Program Files/Sublime Text 2/sublime_text.exe' --wait
希望它对面临与 Sublime 类似问题的人有所帮助。
git config --global core.editor "'C:/Program Files/Sublime Text 3/subl.exe' --wait"
而不是手动编辑 gitconfig
在 Windows 7 中,将编辑器设置为 Notepad++
打开任何文本编辑器。
打开这个文件:C:\Users\YOUR_USERNAME\.gitconfig
将此部分添加到底部:
对于 64 位 Notepad++ 使用:
[core]
editor = 'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar
对于 32 位 Notepad++ 使用:
[core]
editor = 'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar
保存并关闭文件。
当您使用 git 提交时,只需编写 git commit 并按 Enter。它将弹出打开记事本++。
在文件顶部写下你的提交信息,然后保存并关闭文件。完毕!
-multiInst
作为参数添加到 notepad++,可能还需要添加 -notabbar
。如果 git 似乎不知道您何时完成编辑文件并且永远等待或根本不等待,请执行此操作。
>git config --global core.editor '"C:/Program Files (x86)/Notepad++/notepad++.exe"'
editor = 'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar
- 即分隔单引号之外的参数
要将 Visual Studio Code (vscode
) 设为默认 git 编辑器:
git config --global core.editor "code --wait"
如果您使用命令行与设计师合作,那么 Pico,并且不知道捷径;)
git config --global core.editor "pico"
或者
export VISUAL=pico
export EDITOR=pico
Atom 作为你的 git 编辑器
git config --global core.editor "atom --wait"
Atom 需要配置为从命令行运行才能使上述工作正常运行: OS X:从 Atom 安装 shell 命令:菜单栏 > Atom > 安装 Shell 命令 Windows:无需任何操作 - atom 配置为从命令行运行默认
git config --global core.editor "code --wait"
在 Mac OSX 10 中将 Sublime Text 2 设置为 Git 提交编辑器
运行此命令:
$ git config --global core.editor "/Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl"
要不就:
$ git config --global core.editor "subl -w"
-w
参数。例如。 $ git config --global core.editor "code -w"
。整洁的东西
要使 vim 在 ubuntu 20:04 上成为 git 的默认编辑器,请运行以下命令:
git config --global core.editor vim
这为遇到此问题的人提供了一个答案,他们可能想要链接除 vim 之外的编辑器。
当编辑器更新时,Github 的链接资源可能会保持最新,即使关于 SO(包括这个)的答案不是。
Associating Text Editors with git
Github 的帖子准确地显示了为各种编辑器在命令行中输入的内容,包括特定于每个编辑器的选项/标志,以使其与 git 一起工作。
记事本++:
git config --global core.editor "'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
崇高文本:
git config --global core.editor "'c:/Program Files/sublime text 3/subl.exe' -w"
原子:
git config --global core.editor "atom --wait"
上面的命令假定您的编辑器已安装在 Windows 机器的默认目录中。
这些命令基本上将双引号之间的文本添加到主目录中的 .gitconfig
。
在 Windows 机器上,主目录可能是 C:\Users\your-user-name
,其中 your-user-name 是您的登录名。
来自在命令行中,您可以通过输入 cd ~
来访问此目录。
例如,上面的命令将在 [core]
部分下添加以下行,如下所示:
[core] editor = 'C:/Program Files/sublime text 3/subl.exe' -w
如果您有不同的编辑器,只需使用上述任一方法替换为您的编辑器的路径。 (并希望最佳使用不需要标志。)
Windows:将记事本设置为默认提交消息编辑器
git config --global core.editor notepad.exe
按 Ctrl+S 保存您的提交消息。要放弃,只需关闭记事本窗口而不保存。
如果您点击保存的快捷方式,然后决定中止,请转到文件->另存为,然后在打开的对话框中,将“保存类型”更改为“所有文件 (*.*)”。您将看到一个名为“COMMIT_EDITMSG”的文件。删除它,然后关闭记事本窗口。
编辑: 或者,更简单的是,从打开的记事本窗口中删除所有内容并点击保存。 (感谢mwfearnley的评论!)
我认为对于诸如提交消息记事本之类的小型记录来说最好,因为它很简单,有窗口,可以立即打开。当你有大量插件和东西时,即使是你的崇高也可能需要一两秒钟才能被激发。
core.editor = 'notepad' .git/COMMIT_EDITMSG --wait
以便它打开并保存默认编辑消息,您不需要“另存为”
对于 emacs 用户
.emacs
:
(server-start)
shellrc
:
export EDITOR=emacsclient
git config --global core.editor "emacs -nw"
时如何在终端模式下设置 emacs
git config --global core.editor "emacs -nw -q"
,其中 -q
跳过初始化文件。
Sublime Text 3 或 4 作为 Git 编辑器的最佳设置(Windows 和 Linux 说明):
要在 Windows 中遵循这些说明,请确保您已安装 Git for Windows。在 Windows 中,我喜欢使用 Git Bash,让它感觉更像 Linux。
首先,我们要创建一个特殊的 Sublime Text 项目,以便我们可以在 Git 调用编辑器时指定我们想要设置的特殊项目设置,以便在 Git 中进行编辑时更容易。例如,在大多数项目中,我通常将我的标尺设置为 120 个字符,但对于 Git 提交消息,我希望它为 72 个字符,以便在您调用 git log
或 git lg
时它很好地适合终端。
1. 使用我们想要用来编辑 Git 提交消息的设置创建一个 Sublime Text 项目
打开 Sublime Text 并进入菜单 "File" → "New Window" 创建一个新的匿名项目。转到菜单“项目” → “将项目另存为...” 并选择保存位置。 在 Linux 中我将它保存在我的 Linux 主目录中,文件名为 .gitconfig.sublime-project
。因此它的路径是:~/.gitconfig.sublime-project
。 在 Windows 中也将其保存在您的主目录中,例如:C:\Users\MY_USER_NAME\.gitconfig.sublime-project
现在转到菜单 “项目” → “编辑项目”编辑项目设置。粘贴以下内容并保存设置。如果需要,对您的项目设置进行任何进一步的编辑。
{
// For folder settings help see here: https://www.sublimetext.com/docs/3/projects.html
"folders":
[
],
"settings":
{
// Disables horizontal scrolling if enabled.
// May be set to true, false, or "auto", where it will be disabled for
// source code, and otherwise enabled.
"word_wrap": false,
// Set to a value other than 0 to force wrapping at that column rather than the
// window width
"wrap_width": 0,
// Columns in which to display vertical rulers
"rulers": [72, 50], //72 is recommended by git for commit message content, and 50 for commit titles
// The number of spaces a tab is considered equal to
"tab_size": 4,
// Set to true to insert spaces when tab is pressed
"translate_tabs_to_spaces": true,
},
"build_systems":
[
]
}
2.设置Git要使用的编辑器
现在我们需要通过编辑 .gitconfig
文件来设置 Git 使用的编辑器。
对于 Linux:
您的用户副本将位于 ~/.gitconfig
。打开此文件并添加以下行。 请务必使用您刚刚在上面创建的 Git 项目的正确路径名!我使用的是 ~/.gitconfig.sublime-project
。
[core]
editor = subl --project ~/.gitconfig.sublime-project --wait
--wait
很重要,因为它强制 Git 等到您关闭文件后再继续。 --project
行很重要,它告诉 Sublime Text 每当 Git 打开 Sublime Text 时要打开哪个项目。
根据上述@digitaldreamer 的回答(https://stackoverflow.com/a/2596835/4561887),“subl
可以替换为可执行文件的完整路径,但 [别名 subl
] 通常在 [Sublime is] 正确安装时可用。”
对于 Windows:
对于 Windows,首先阅读 Linux 说明以获取背景信息。现在我们将做一些几乎相同的事情。
(可选:创建一个 subl
别名以在 Git Bash 中使用):
打开一个文本编辑器(例如,Notepad、Notepad++、Sublime Text、Geany 等),并在您的主目录中创建一个名为“.bash_profile”的文件。因此它的路径是:C:\Users\MY_USER_NAME\.bash_profile
。将以下内容保存到其中:
alias subl="/c/Program\ Files/Sublime\ Text\ 3/subl.exe"
这将创建一个名为 subl
的 Git Bash 别名,我们现在可以在 Windows 版 Git Bash 中使用它来轻松打开 Sublime Text。此步骤不是必需的,但对于一般 Git Bash 使用很有用。现在,您可以调用 subl .
,例如,在 Git Bash 中在当前目录中打开一个新的 Sublime Text 项目。
(强制的):
编辑在您的主目录中找到的 .gitconfig
文件:C:\Users\MY_USER_NAME\.gitconfig
,向其中添加以下内容。请注意上面 Linux 指令的细微变化:
[core]
editor = 'C:/Program Files/Sublime Text 3/subl.exe' --project ~/.gitconfig.sublime-project --wait
请注意,您必须指定 Sublime Text 可执行文件的完整路径。注意斜线的方向!使用 / NOT \ 分隔路径名中的文件夹! (感谢 VonC 帮助我看到这一点)。
我们为上面的 Git Bash 创建的 subl 别名在这里不起作用,因此您不能像我们在 Linux 示例中那样使用它,而是必须指定整个路径,如上所示。
但是,~ 符号在这里仍然可以访问您的 Windows 主目录。
2.5. (可选)将“Git”包安装到 Sublime Text 3 中。
这使您可以突出显示 git commit
消息的语法,以及访问其他 Git 命令,例如 git blame
(我在 Sublime Text 中经常使用)或 git commit
(我在 Sublime Text 中不使用它,因为我'我更喜欢通用 Git 流程的命令行,正如我在这个答案下面的评论中提到的那样)。
要安装软件包:首先,确保安装了“Package Control”。接下来,按 Ctrl + Shift + P(与工具 → 命令面板相同)并键入全部或部分“包控制:安装包”,然后按 Enter。在出现的搜索框中,搜索“Git”包并按 Enter 键,或单击它以自动安装它。
安装后,Ctrl + Shift + P 然后搜索“git”将显示您现在可以在 Sublime Text 内部使用的 Git 命令,例如作为git blame
。
3.使用它
现在,例如,当您像往常一样从命令行调用 git commit
时,Sublime Text 将使用该项目的设置打开我们在上面创建的 .gitconfig.sublime-project
!当您键入一个段落时,您会注意到它超出了我们设置的标尺,因为软自动换行已关闭。 要通过在每行末尾自动插入硬回车强制硬换行,请将光标放在要自动换行的长行上,然后按 Alt + Q kbd>. 现在它将硬包装/硬折叠 72 个字符,这是我们在上面项目设置的“标尺”参数中设置的。
现在,使用 Ctrl + S 保存您的提交消息,并使用 Ctrl + Shift< 退出(完成您的 git commit
) /kbd> + W。
完毕!
有关的:
在 Windows 上使用 Meld 的 Git 合并工具 https://github.com/ElectricRCAaircraftGuy/eRCaGuy_dotfiles
Git Commit
语法类型。您现在可以跳过自定义的“sublime-text 项目”步骤。
sublime
与 git
一起使用,并且还使用 trim_trailing_white_space_on_save
,则您希望为补丁添加添加别名,因为删除尾随空格会破坏补丁编辑,这非常有意义。这可以通过以下方式实现:git config --global alias.patch "-c core.editor=vim add --patch"
Mvim 作为你的 git 编辑器
像所有其他 GUI 应用程序一样,您必须使用等待标志启动 mvim。
git config --global core.editor "mvim --remote-wait"
--remote-wait-silent
以避免丑陋的错误信息 :)
有一个您可以使用的逗号列表,但对于 vs 代码使用这个
git config --global core.editor "code --wait"
这是所有编辑器的链接:https://git-scm.com/book/en/v2/Appendix-C%3A-Git-Commands-Setup-and-Config
对于想要将 neovim 与适用于 Linux 的 Windows 子系统一起使用的 Windows 用户:
git config core.editor "C:/Windows/system32/bash.exe --login -c 'nvim .git/COMMIT_EDITMSG'"
这不是一个万无一失的解决方案,因为它不处理交互式变基(例如)。非常欢迎改进!
仅仅因为我来这里是为了寻找一个一次性解决方案(在我的情况下,我通常使用 vim
,但这次我想使用 VS Code)对于单个命令,其他人可能也想知道:
GIT_EDITOR='code -w' git rebase -i …
这是我的 git
/hub
版本,仅供参考:
git version 2.24.2 (Apple Git-127)
hub version 2.14.1
试试 EDITOR=vim git commit
。
或者您可以在 bashrc 中通过 export EDITOR=vim
将 EDITOR 设置为 vim。
对于来自 Mac 应用商店的 TextWrangler 用户:
git config --global core.editor "open -n -W -a TextWrangler"
此外,确保您的“TextWrangler > 首选项 > 应用程序 > 当 TextWrangler 变为活动状态时:”设置设置为“什么都不做”
这适用于我在 OS X 10.11.4 和 Mac 应用商店的 TextWrangler 5.0.2 上。
解释:
-n 表示在新实例中打开。
-W 表示等到应用程序退出后再使用编辑文件的内容作为提交消息。
-a TextWrangler 表示使用 TextWrangler 应用程序打开文件。
有关更多详细信息,请参阅 Mac 终端应用程序中的 man open
。
git config --global core.editor "edit -w"
。这将在当前实例中打开提交消息,并且只要您仅关闭此提交消息文档,提交就会继续。
使用 git-review
时,我必须修改 sequence.editor
值才能进行交互式变基 (git rebase -i -p
):
git config --global sequence.editor "gvim" # or whatever your prefer
gvim
要求:apt install vim-gtk
参考
#2944 交互式 Rebase 失败并出现警告:“Vim:警告:输出不是终端”
sjurba/rebase-editor 的安装部分
在 TextMate 的 macOS Big Sur (11.0) beta 上:环境变量选项均无效。 (设置所有三个:GIT_EDITOR、VISUAL 和 EDITOR。)
最后在 git 中设置了全局 core.editor,并且成功了:
git config --global core.editor "~/bin/mate -w"
对于 Windows,Neovim:
# .gitconfig
[core]
editor='C:/tools/neovim/Neovim/bin/nvim-qt.exe'
对于 IntelliJ 用户
当我尝试 git rebase 时,我收到以下错误:'提示:等待您的编辑器关闭文件...代码 -n -w:代码:找不到命令错误:编辑器有问题'代码-n -w'。
https://i.stack.imgur.com/iKVF5.png
问题是我没有在我的环境 PATH 变量中添加命令代码。而且我不想从我的终端使用 Visual Studio Code。所以这就是为什么它提示“找不到命令”。我通过删除解决了这个问题
编辑器 = 代码 -n -w
从我的 .gitconfig 文件的核心部分。 Git再次正常工作。
对于 EmEditor 用户
要将 EmEditor 设置为 Git 的默认文本编辑器,请打开 Git Bash,然后键入:
git config --global core.editor "emeditor.exe -sp"
需要 EmEditor v19.9.2 或更高版本。
对于 MAC,BBEdit:
首先,打开 BBEdit,单击 BBEdit 徽标,然后选择安装命令行工具。
然后从命令行,
git config --global core.editor "BBEdit -w"
对于 Textmate 用户
当您想要编辑提交时,这会打开 Textmate 编辑器。需要安装 textmate 命令行工具。
git config --global core.editor "mate -w"
git config --global core.editor "/usr/local/bin/mate -w"
对于想要使用 Kinesics 文本编辑器的 Windows 用户
创建一个名为“k.sh”的文件,添加以下文本并放在您的主目录 (~) 中:
winpty "C:\Program Files (x86)\Kinesics Text Editor\x64\k.exe" $1
在 git 提示符下输入:
git config --global core.editor ~/k.sh
不定期副业成功案例分享
git config --global
将写入您的个人(每用户)git 配置文件。在 Unices 上是~/.gitconfig
。因此,这将为您的所有存储库配置它。git commit --amend
-w
不是必需的;-w {scriptout}
保存您在编辑时键入的所有字符,以便稍后重播。或许您将它与-f
混淆了,后者在调用 GUI 版本的 Vim 时是必要的。也就是说,如果您使用mvim
,那么您指定的编辑器应该是mvim -f
而不是mvim
。