我更愿意在Vim中编写我的提交消息,但是它正在Emacs中打开它们。
如何配置Git始终使用Vim?请注意,我要全局执行此操作,而不仅仅是针对单个项目。
我更愿意在Vim中编写我的提交消息,但是它正在Emacs中打开它们。
如何配置Git始终使用Vim?请注意,我要全局执行此操作,而不仅仅是针对单个项目。
Answers:
如果你想设置的编辑只对Git的,要么做(你不需要两者):
core.editor
在您的Git配置中设置:git config --global core.editor "vim"
GIT_EDITOR
环境变量:export GIT_EDITOR=vim
如果要为Git 和其他程序设置编辑器,请设置标准变量VISUAL
和EDITOR
环境变量*:
export VISUAL=vim
export EDITOR="$VISUAL"
*不必同时设置两者,但是某些程序可能不使用更正确的VISUAL
。见VISUAL
对EDITOR
。
对于Sublime Text:将其添加到中.gitconfig
。这--wait
很重要(它允许在sublime中键入文本,并将等待保存/关闭事件。)
[core]
editor = 'subl' --wait
可以用可执行文件的完整路径替换“ subl”,但通常在正确安装后才可用。
git config --global
将写入您的个人(每用户)git配置文件。在Unices上是~/.gitconfig
。因此,这将为您的所有存储库配置它。
git commit --amend
-w
是没有必要的;-w {scriptout}
保存您在编辑时键入的所有字符,以便稍后重播。也许您将其与混淆了-f
,这在调用Vim的GUI版本时是必须的。也就是说,如果使用mvim
,则您指定的编辑器应为mvim -f
而不是mvim
。
复制粘贴此:
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"
C:\Users\YOUR_USERNAME\.gitconfig
[core]
editor = 'C:/Program Files (x86)/Notepad++/notepad++.exe'
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
-也就是说,划定单引号外面PARAMS
将Visual Studio Code(vscode)设置为默认的git编辑器
git config --global core.editor "code --wait"
运行以下命令:
$ 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"
。整洁的东西
git config --global core.editor notepad.exe
点击Ctrl+ S保存您的提交消息。要丢弃,只需关闭记事本窗口而不保存即可。
如果您点击保存的快捷方式,然后决定中止,请转到“文件”->“另存为”,然后在打开的对话框中将“另存为类型”更改为“所有文件(*。*)”。您将看到一个名为“ COMMIT_EDITMSG”的文件。删除它,然后关闭记事本窗口。
编辑:或者,更容易地,从打开的记事本窗口中删除所有内容,然后单击保存。(感谢mwfearnley的评论!)
我认为,对于诸如提交消息之类的小写文章,记事本效果最好,因为它很简单,带有Windows,可立即打开。当您有大量的插件和东西时,甚至连您的崇高精神都可能需要一两秒钟才能被激发。
\r\n
(Windows中的换行符)和\n
(Linux中的换行符,也是Git的默认设置)有关。
core.editor = 'notepad' .git/COMMIT_EDITMSG --wait
以便它打开并保存默认的编辑消息,并且您不需要“另存为”
这为遇到此问题的人们提供了一个答案,他们可能希望链接vim以外的编辑器。
Github所链接的资源很可能会在更新编辑器时保持最新状态,即使SO的答案(包括该答案)没有。
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机器上,home可能是C:\Users\your-user-name
,其中your-user-name是您的登录名。
在命令行中,输入可以访问此目录cd ~
。
例如,上面的命令将在以下[core]
部分的下面添加以下行:
[core]
editor = 'C:/Program Files/sublime text 3/subl.exe' -w
如果您使用的是其他编辑器,请使用上述两种方法替换为编辑器的路径。(并希望不需要标记来实现最佳用法。)
对于emacs用户
.emacs
:
(server-start)
shellrc
:
export EDITOR=emacsclient
git config --global core.editor "emacs -nw"
git config --global core.editor "emacs -nw -q"
,其中-q
跳过初始化文件。
要在Windows中遵循这些说明,请确保已安装Windows版Git。在Windows中,我喜欢使用Git Bash,使它看起来更像Linux。
首先,我们要创建一个特殊的Sublime Text项目,以便我们可以指定要在Git调用编辑器时设置的特殊项目设置,以使在Git中进行编辑时的事情变得更加容易。例如,在大多数项目中,我通常将标尺设置为120个字符,但是对于Git提交消息,我希望该标尺为72个字符,以便当您调用git log
或时,它可以很好地适合终端git lg
。
打开Sublime Text,然后转到菜单“文件” → “新窗口”以创建一个新的匿名项目。转到菜单“项目” → “将项目另存为...”,然后选择一个保存位置。在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":
[
]
}
现在,我们需要通过编辑.gitconfig
文件来设置Git使用的编辑器。
您的用户副本位于~/.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],[ 别名]通常可用。”
对于Windows,请先阅读Linux指导以获取背景信息。现在,我们将执行几乎相同的操作。
(可选:创建subl
在Git Bash中使用的别名):
打开一个文本编辑器(例如,记事本,Notepad ++,Sublime Text,Geany等),然后在主目录中创建一个名为“ .bash_profile”的文件。因此,其路径为:C:\Users\MY_USER_NAME\.bash_profile
。将以下内容保存到其中:
alias subl="/c/Program\ Files/Sublime\ Text\ 3/subl.exe"
这将创建一个名为Git Bash的别名subl
,我们现在可以在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
/
NOT \
分隔路径名称中的文件夹!(感谢VonC 帮助我看到了这一点)。subl
上面为Git Bash设置的别名在这里不起作用,因此您不能像在Linux示例中那样使用它,而必须如上所述指定整个路径。~
但是,该符号在这里仍然可以正常工作以进入Windows主目录。这使您可以突出显示git commit
消息的语法,并可以访问其他Git命令,例如git blame
(在Sublime Text中经常使用)或git commit
(在Sublime Text中不使用,因为我更喜欢通用Git的命令行)流量,正如我在此答案下方的评论中提到的那样。
要安装软件包:首先,确保已安装“软件包控制”。接下来,按Ctrl+ Shift+ P(与“工具”→“命令面板”相同)并键入“ Package Control:Install Package”的全部或部分,然后按Enter。在出现的搜索框中,搜索“ Git”软件包并Enter单击它,或单击它以自动安装它。
安装后,Ctrl++ Shift+ P然后搜索“ git”将显示Git命令,您现在可以在Sublime Text内部内部使用它,例如git blame
。
现在git commit
,例如,当您从命令行正常调用时,Sublime Text将打开.gitconfig.sublime-project
上面创建的带有该项目设置的文本!键入段落时,您会注意到,由于关闭了自动换行功能,因此该段落超出了我们设置的标尺。要在每行末尾通过自动插入的硬返回来强制进行自动换行,请将光标放在要自动换行的长行上,然后按Alt+ Q。现在它将以72个字符进行硬包装/硬折叠,这是我们在上面的项目设置的“ rulers”参数中设置的。
现在,保存您与提交信息Ctrl+ S,并退出(以完成git commit
用)Ctrl+ Shift+ W。
做完了!
Git Commit
语法类型。您现在可以跳过自定义的“崇高文本项目”步骤。
sublime
与git
和同时使用trim_trailing_white_space_on_save
,则要添加别名以添加补丁,因为删除尾随空白会中断补丁编辑,而补丁编辑的意义非常重大。这可以通过以下方式实现:git config --global alias.patch "-c core.editor=vim add --patch"
像所有其他GUI应用程序一样,您必须使用wait标志启动mvim。
git config --global core.editor "mvim --remote-wait"
--remote-wait-silent
为了避免难看的错误消息:)
git config --global core.editor "open -n -W -a TextWrangler"
另外,请确保将“ TextWrangler>首选项>应用程序>当TextWrangler变为活动状态时:”设置设置为“不执行任何操作”
这对我适用于Mac App Store中带有TextWrangler 5.0.2的OS X 10.11.4。
说明:
该-n手段在新实例中打开。
所述-W装置等待,直到应用程序退出使用编辑的文件的内容作为提交消息之前。
该-a的TextWrangler意味着使用应用程序的TextWrangler打开文件。
有关man open
更多详细信息,请参见Mac Terminal应用程序中的。
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
当您要编辑提交时,将在其中打开Textmate编辑器。需要安装textmate命令行工具。
git config --global core.editor "mate -w"
git config --global core.editor "/usr/local/bin/mate -w"