如何使用Visual Studio代码作为git的默认编辑器?

当在命令行使用git时,我想知道是否可以使用Visual Studio Code作为默认编辑器,即当创建提交注释并从命令行查看文件的差异时。

我知道不可能使用它来做合并(至少在一分钟),但有人知道是否有可能使用它来查看diff,如果是这样,在.gitconfig文件中需要什么命令行选项来实现这一点吗?

更新1:

我尝试了一种类似于我为记事本++在过去所做的方法,即。

#!/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

如果你有兴趣看到这个功能被添加,你可以考虑在这里投票:

http://visualstudio.uservoice.com/forums/293070-visual-studio-code/suggestions/7756482-support-git-configure-diff-and-merge-tools

更新3:

我一直在可靠的信息,这个功能已经被VSCode团队选中了,所以我期待着未来的版本会包含它。

更新4:

感谢下面@f-boucheros的注释,我已经能够让VS Code作为默认编辑器来提交注释,rebase等。我仍然想看看是否有可能将它用作diff工具。

更新5:

根据这个问题的公认答案,现在可以使用V1.0版本的代码实现这一点。

335296 次浏览

我不确定你能做到这一点,但你可以尝试这些添加在你的gitconfig文件。

尝试将这些值中的kdiff3替换为指向visual studio代码可执行文件。

< p > <代码> (合并) Tool = kdiff3 [mergetool“kdiff3”) path = C:/Program Files/KDiff3/ KDiff3 .exe keepBackup = false trustExitCode = false < /代码> < / p >

我打开我的.gitconfig并修改它:

[core]
editor = 'C:/Users/miqid/AppData/Local/Code/app-0.1.0/Code.exe'

这对我来说很管用(我用的是Windows 8)。

然而,我注意到,在我尝试了任意git commit后,在我的Git Bash控制台,我看到以下消息:

[9168:0504/160114:INFO:renderer_main.cc(212)] Renderer process started

不确定这可能会产生什么后果。

GitPad将当前文本编辑器设置为Git的默认编辑器。

我在Windows 10中.txt文件的默认编辑器是Visual Studio Code,运行GitPad曾经使它成为Git的默认编辑器。我没有遇到过问题中提到的问题(在我的情况下,Git会等到VS Code窗口关闭)。

(.exe文件的链接对我不起作用,你可能需要自己编译源代码。)

我将Visual Studio Code设置为默认打开。txt文件。接下来我使用了简单的命令:git config --global core.editor "'C:\Users\UserName\AppData\Local\Code\app-0.7.10\Code.exe\'"。一切都很顺利。

据我所知,VSCode已经不在AppData中了。

因此,通过在命令提示符窗口中执行该命令来设置默认的git编辑器:

git config --global core.editor "'C:\Program Files (x86)\Microsoft VS Code\code.exe' -w"

参数-w--wait是在返回前等待窗口关闭。Visual Studio Code是基于Atom Editor的。如果还安装了atom,则执行命令atom --help。您将看到help中的最后一个参数是wait。

下次你执行git rebase -i HEAD~3时,它会弹出Visual Studio Code。一旦VSCode关闭,Git将夺回领先地位。

注意:我目前的VSCode版本是0.9.2

我希望这对你有所帮助。

好消息!在撰写本文时,该特性已经在0.10.12-insiders发行版中实现,并通过0.10.14-insiders实现。因此,我们将在即将到来的版本VS Code 1.0版本发布中使用它。

实现参考:实现-w/——wait命令行参数

在最新的版本(v1.0,在2016年3月中发布)中,您现在可以使用VS Code作为默认的git提交/diff工具。引自文件:

  1. 确保您可以从命令行运行code --help并获得 的帮助。< / p >

    • 如果您没有看到帮助,请执行以下步骤:

      • Mac:在命令行中选择Shell命令:在路径中安装“Code”命令 调色板。< / p >

          当你在VS中按转变 + + P时,命令面板会弹出 代码。(转变 + ctrl + P在Windows中) 李< / ul > < / >
        • Windows:确保在运行过程中选择了添加到PATH 安装。李< / >
        • Linux:确保您通过我们新的.deb或 rpm程序包。李< / > 李< / ul > < / > 李< / ul > < / >
        • 从命令行运行git config --global core.editor "code --wait"
现在你可以运行git config --global -e并使用VS Code作为编辑器来配置Git。 enter image description here 添加以下内容以支持使用VS Code作为diff工具
[diff]
tool = default-difftool
[difftool "default-difftool"]
cmd = code --wait --diff $LOCAL $REMOTE
这利用了新的--diff选项,你可以传递给VS Code 将两个文件并排比较 总结一下,这里有一些你可以在VS中使用Git的例子 代码:< / p >
  • git rebase HEAD~3 -i允许使用VS Code进行交互重基
  • git commit允许使用VS Code提交消息
  • git add -p后跟e用于交互式添加
  • git difftool <commit>^ <commit>允许使用VS Code作为差异编辑器进行更改

在Mac终端应用程序中运行此命令

git config --global core.editor "/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin/code"

在Windows 10上使用64位内部版本的命令应该是:

git配置全局核心。C:\Program Files\Microsoft VS Code 业内人士\ bin \ code-insiders.cmd”< / p >

你也可以重命名'code-insiders。Cmd ' to '代码。在“Program Files”目录下执行cmd, 通过这种方式,您现在可以使用'code .'命令开始编辑文件。目录< / p >

您需要使用命令:

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代码添加到您的 %PATH%,所以从控制台你可以输入'code'打开VS code on 该文件夹。之后,需要重新启动控制台 将%PATH%环境变量更改为 生效。< / p >

只是想将这些反斜杠添加到之前的答案,我在Windows 10 CMD上,空格前没有反斜杠它就不能工作。

git config --global core.editor "C:\\Users\\your_user_name\\AppData\\Local\\Programs\\Microsoft\ VS\ Code\\Code.exe"

另一个有用的选项是设置EDITORVISUAL环境变量。许多应用程序和实用程序都使用这些环境变量来了解使用哪个编辑器。如果没有设置core.editor, Git也会使用其中一个(取决于Git版本)。

您可以使用以下方法将其设置为当前会话:

export EDITOR="code --wait"
export VISUAL="$EDITOR"

这样不仅是git,而且许多其他应用程序将使用VS Code作为编辑器。

要使此更改永久存在,例如将其添加到~/.profile中。更多选项请参见这个问题


这种方法的另一个优点是是你可以为不同的情况设置不同的编辑器:

  1. 当您从本地终端工作时。
  2. 当您通过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连接,它也能工作。


关于EDITORVISUAL环境变量之间的差异,请参阅这个问题

除了export EDITOR="code --wait"之外,请注意,在VSCode v1.47(2020年6月)中,这些差异编辑器将支持VSCode重新加载/重启。
看到# EYZ0: < / p >

使用提交1428年d44, diff编辑器现在有机会在重新加载中存活,这是可以的,除非git资源上的diff编辑器被打开为活动的:

enter image description here

(和提交24 f1b69修复)

git config --global core.editor "code --wait"

git config --global core.editor "code -w"

验证:

git config --global -e

您的配置将在Visual Studio Code中打开。

在.gitconfig文件中需要哪些命令行选项才能实现这一点?

为了让git-lens工作,我必须把这个添加到我的.gitconfig文件中:


[core]
# Make sure that interactive rebases open correctly with vs code
editor = code -w -n


-n是可选的-正如Alex下面提到的,它是--new-window的缩写,我发现它很有用:)

我添加了git bashvscode terminal作为默认值 如果你像我一样懒。 .我建议你和我一样

  • Step1:打开设置:Ctrl + ,

  • Step2: search .json—>选择文件setting.json

  • Step3:将代码粘贴在文件的末尾,但要用括号括起来 # EYZ0 < / >强

    < p >“terminal.integrated.defaultProfile.windows":“gitbash" “terminal.integrated.shell.windows":“E: \ app \ git \ \ bin \ bash.exe" git, < / p >

在2022年的Windows 10上,你应该有下一个路径:

# EYZ0

我添加了一个答案,因为其他所有的答案都不够简洁,不适合我的具体情况。我用的是装有M1芯片的MacBook Air 2021

在VS Code中创建默认的git编辑器:

步骤1

在命令行中运行命令git config --global core.editor "code --wait"

步骤2

如果你在这个阶段尝试提交,你可能会得到一个类似这样的错误:

"提示:等待编辑器关闭文件…Code -w: Code:命令不存在 编辑器code -w'"有一个问题。

这意味着你没有shell命令"code"安装在VS Code。使用(command + shift + p)在VS Code中打开命令中心。搜索“code”;并选择“Shell Command: Install ' code ' Command in path”。这增加了“;code"去你的路。

步骤3

当试图安装“code”时,你可能会得到一个类似这样的错误:

EACCES:权限被拒绝,断开“/usr/local/bin/code”的链接。

我不知道是什么原因,但一个简单的卸载和重新安装解决它。要卸载,请搜索“卸载”;在VS Code命令中心,选择“Shell command: Uninstall ' Code ' command in path”;

步骤4

运行命令git config --global -e来测试新的默认编辑器是什么。你的配置文件应该在vscode文本编辑器中打开

来源:

https://levelup.gitconnected.com/how-to-configure-git-to-use-vs-code-as-the-default-text-editor-ea3670ab525a

VS Code Denied Permission unlink 'usr/local/bin/ Code '