在命令行使用 git 时,我想知道是否可以使用 Visual Studio Code 作为默认编辑器,即在创建提交注释并从命令行查看文件的差异时。
我知道不可能用它来进行合并(至少现在),但有谁知道是否可以用它来查看差异,如果可以,需要哪些命令行选项.gitconfig 文件来实现这一点?
更新 1:
我尝试了一种类似于我为 Notepad++ in the past 所做的方法,即
#!/bin/sh
"c:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$*"
并使用:
#!/bin/sh
"C:\Users\gep13\AppData\Local\Code\app-0.1.0\Code.exe" "$*"
但这会导致错误消息:
C:\temp\testrepo [master +1 ~0 -0]> git commit
[8660:0504/084217:ERROR:crash_reporter_win.cc(70)] Cannot initialize out-of-process crash handler
Aborting commit due to empty commit message.
C:\temp\testrepo [master +1 ~0 -0]>
代码以预期的内容正确打开,但它不等待响应,即单击保存并关闭窗口以返回提示。
更新 2:
我刚刚收到一位开发 VSCode 的开发人员的回复。看起来目前不支持此功能:-(
https://twitter.com/IsidorN/status/595501573880553472
如果您有兴趣看到添加此功能,您可能需要考虑在此处添加您的投票:
更新 3:
我一直reliably informed VSCode 团队已经采用了此功能,因此我期待未来的版本将包含它。
更新 4:
感谢下面的@f-boucheros 评论,我已经能够让 VS Code 作为提交评论、rebase 等的默认编辑器工作。我仍然想看看是否也可以将它用作差异工具。
更新 5:
根据该问题的公认答案,现在可以使用 V1.0 版本的代码。
在最新版本(v1.0,发布于 2016 年 3 月)中,您现在可以use VS Code as the default git commit/diff tool。从文档中引用:
确保您可以从命令行运行 code --help 并获得帮助。如果您没有看到帮助,请按照以下步骤操作: Mac:选择 Shell 命令:在命令面板的路径中安装“代码”命令。命令面板是在 VS Code 中按 shift + ⌘ + P 时弹出的内容。 (Windows 中的 shift + ctrl + P) Windows:确保在安装过程中选择了 Add to PATH。 Linux:确保您通过我们新的 .deb 或 .rpm 包安装了 Code。从命令行运行 git config --global core.editor "code --wait" 现在您可以运行 git config --global -e 并使用 VS Code 作为编辑器来配置 Git。添加以下内容以启用对使用 VS Code 作为差异工具的支持:
[diff]
tool = default-difftool
[difftool "default-difftool"]
cmd = code --wait --diff $LOCAL $REMOTE
这利用了可以传递给 VS Code 的新 --diff 选项来并排比较两个文件。总而言之,以下是一些可以在 VS Code 中使用 Git 的示例: git rebase HEAD~3 -i 允许使用 VS Code 进行交互式 rebase git commit 允许将 VS Code 用于提交消息 git add -p 后跟 e for交互式添加 git difftool
据我了解,VSCode 不再在 AppData 中。
因此,通过在命令提示符窗口中执行该命令来设置默认的 git 编辑器:
git config --global core.editor "'C:\Program Files (x86)\Microsoft VS Code\code.exe' -w"
参数-w
,--wait
是等待窗口关闭后再返回。 Visual Studio Code 基于 Atom 编辑器。如果您还安装了 atom 执行命令 atom --help
。您将看到帮助中的最后一个参数是等待。
下次您执行 git rebase -i HEAD~3
时,它将弹出 Visual Studio Code。一旦 VSCode 关闭,Git 将夺回领先地位。
注意:我当前的 VSCode 版本是 0.9.2
我希望有帮助。
-w
的意义是什么?您在哪里找到了相关文档?
git config --global core.editor "code --wait"
的编辑器。
git config --global core.editor "code --wait"
或者
git config --global core.editor "code -w"
验证:
git config --global -e
您的配置将在 Visual Studio Code 中打开。
git config --global - e
另一个有用的选项是设置 EDITOR
和 VISUAL
环境变量。许多应用程序和实用程序使用这些环境变量来了解要使用的编辑器。如果未设置 core.editor
,Git 也会使用其中之一(取决于 Git 版本)。
您可以使用以下方法为当前会话设置它:
export EDITOR="code --wait"
export VISUAL="$EDITOR"
这样,不仅 git
,许多其他应用程序都将使用 VS Code 作为编辑器。
例如,要使此更改永久生效,请将其添加到您的 ~/.profile
。有关更多选项,请参阅 this question。
这种方法的另一个优点是您可以为不同的情况设置不同的编辑器:
当您在本地终端工作时。当您通过 SSH 会话连接时。
这对于 VS Code(或任何其他 GUI 编辑器)尤其有用,因为它在没有 GUI 的情况下无法工作。
在 Linux 操作系统上,将其放入您的 ~/.profile
:
# Preferred editor for local and remote sessions
if [[ -n $SSH_CONNECTION ]]; then # SSH mode
export EDITOR='vim'
else # Local terminal mode
export EDITOR='code -w'
fi
export VISUAL="$EDITOR"
这样当你使用本地终端时,$SSH_CONNECTION
环境变量将为空,所以会使用 code -w
编辑器,但是当你通过 SSH 连接时,$SSH_CONNECTION
环境变量将是一个非空字符串,因此将使用 vim
编辑器。它是控制台编辑器,因此即使您通过 SSH 连接它也可以工作。
有关 EDITOR
和 VISUAL
环境变量的区别,请参阅 this question。
core.editor
配置,Git 使用 $VISUAL
环境变量,而不是 $EDITOR
。所以我喜欢这个答案,但我还在 fi
下方添加了一行,说明 export VISUAL="$EDITOR"
以同步它们。
GIT_EDITOR='code --wait'
在 Ubuntu 22.04 上为我工作;混帐 2.34.1; VS 代码 1.68.1。设置 EDITOR
没有,设置 git config --global core.editor "code --wait"
没有。
您需要使用命令:
git config --global core.editor "'C:\Program Files\Microsoft VS Code\code.exe' -n -w"
确保你可以从 Git Bash 启动你的编辑器
如果您想使用带有短路径的 Code.exe,可以通过将以下行添加到您的 .bash_profile 来执行此操作:
alias vscode="C:/Program\ Files/Microsoft\ VS\ Code/Code.exe"
现在,您可以仅使用 vscode
命令(或您命名的任何名称)调用它
一些附加信息:
安装程序会将 Visual Studio Code 添加到您的 %PATH%,因此您可以从控制台键入“code”以打开该文件夹上的 VS Code。您需要在安装后重新启动控制台,以使对 %PATH% 环境变量的更改生效。
-n
是--new-window
的缩写,让git打开一个新的编辑器窗口,-w
是--wait
的缩写,让git等待你再次关闭窗口。这是唯一对我有用的答案,因为如果我已经打开了 VS Code,--wait
将无法在没有 --new-window
的情况下工作。
我打开了我的 .gitconfig
并对其进行了修改:
[core]
editor = 'C:/Users/miqid/AppData/Local/Code/app-0.1.0/Code.exe'
这对我有用(我在 Windows 8 上)。
但是,我注意到在我的 Git Bash 控制台中尝试任意 git commit
后,我看到以下消息:
[9168:0504/160114:INFO:renderer_main.cc(212)] Renderer process started
不确定这可能会产生什么后果。
app-0.1.0/resources/app/env.js
似乎包含代码可执行文件采用的一些命令行标志。没有人建议与 -multiInst
等效的行为。
--wait
标志,并且强烈建议使用 --new-window
标志,以便提交 msg/diff/whatever 不会在已打开的编辑器中显示为新选项卡,需要您关闭您可能仍在处理的文件,以向 git 发出您已完成编辑的信号。
好消息!在撰写本文时,此功能已在 0.10.12-insiders 版本中实现,并通过 0.10.14-insiders 执行。因此,我们将在即将发布的版本 1.0 Release of VS Code 中使用它。
实施参考:Implement -w/--wait command line arg
在您的 Mac 终端应用程序中运行此命令
git config --global core.editor "/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin/code"
除了 export EDITOR="code --wait"
,请注意,在 VSCode v1.47(2020 年 6 月)中,这些差异编辑器将承受 VSCode 重新加载/重新启动。
请参阅issue 99290:
使用提交 1428d44,差异编辑器现在有机会在重新加载后幸存下来,并且这可以正常工作,除非 git 资源上的差异编辑器被打开为活动的:
(commit 24f1b69 解决了这个问题)
GitPad 将您当前的文本编辑器设置为 Git 的默认编辑器。
我在 Windows 10 中用于 .txt
文件的默认编辑器是 Visual Studio Code,运行 GitPad 曾经使它成为 Git 的默认编辑器。我没有遇到问题中提到的问题(在我的情况下,Git 等到 VS Code 窗口关闭)。
(.exe
文件的链接对我不起作用,您可能需要自己编译源代码。)
Right click
> 时,代码就在列表中Open with
> Chose another app
。我希望它在设置时register itself(并在每次更新时更新注册表,以便 shell 可以找到它),但除了注册表中的“使用代码打开”上下文菜单项之外,我找不到任何其他内容。所以我真的没有更明确的答案,对不起。
只想将这些反斜杠添加到以前的答案中,我在 Windows 10 CMD 上,如果没有空格前的反斜杠,它就无法工作。
git config --global core.editor "C:\\Users\\your_user_name\\AppData\\Local\\Programs\\Microsoft\ VS\ Code\\Code.exe"
.gitconfig 文件中需要哪些命令行选项才能实现这一点?
我必须将此添加到我的 .gitconfig 文件中才能使 git-lense 工作:
[core]
# Make sure that interactive rebases open correctly with vs code
editor = code -w -n
-n
是可选的 – 正如 Alex 在下面提到的,它是 --new-window
的缩写,我觉得它很有帮助:)
git config --global core.editor "code -w -n"
-w
是 --wait
的缩写
我在 vscode terminal
中默认添加了 git bash
如果你像我一样懒惰。那我劝你也跟我一样。
Step1:打开设置:Ctrl + ,
Step2:搜索.json --> 选择文件setting.json
Step3:将代码粘贴在文件末尾,但在括号'}'中 "terminal.integrated.defaultProfile.windows": "gitbash", "terminal.integrated.shell.windows":"E:\app\git\Git \bin\bash.exe",
我不确定你能做到这一点,但是你可以在你的 gitconfig 文件中尝试这些添加。
尝试从这些值替换 kdiff3 以指向 Visual Studio 代码可执行文件。
[merge] tool = kdiff3 [mergetool "kdiff3"] path = C:/Program Files/KDiff3/kdiff3.exe keepBackup = false trustExitCode = false
我将 Visual Studio Code 设置为默认打开 .txt 文件。接下来我确实使用了简单的命令:git config --global core.editor "'C:\Users\UserName\AppData\Local\Code\app-0.7.10\Code.exe\'"
。一切都很好。
在使用 64 位 Insiders 版本的 Windows 10 上,命令应该是:
git config --global core.editor "'C:\Program Files\Microsoft VS Code Insiders\bin\code-insiders.cmd'"
您还可以在“Program Files”目录中将“code-insiders.cmd”重命名为“code.cmd”,这样您现在就可以使用“code”命令了。开始编辑 .目录
在 Windows 10 上的 2022 年,您应该有下一条路径:
git config --global core.editor "'C:\Users\<your username here>\AppData\Local\Programs\Microsoft VS Code\code.exe' -w"
不定期副业成功案例分享
--new-window
很有帮助。这样 git 操作将在新窗口中打开。Ctrl+Shift+P
?我的不工作(没有code --help
可用),我不明白什么意思:“确保在安装过程中选择了添加到 PATH”我应该怎么做才能检查它?有人可以帮帮我吗?"files.hotExit": "off"
git config core.editor "code -n --wait"
与 VS Code 1.17.2 一起使用,从外部命令行运行。code
和code --wait
都让我收到“由于提交消息为空而中止提交”。