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

Gar*_*ark 312 git visual-studio-code

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

我明白用它做合并是不可能的(至少在一分钟之内)但是有没有人知道是否有可能用它来查看差异,如果有的话,需要什么命令行选项.gitconfig文件来实现这一目标?

更新1:

我尝试过类似于我过去Notepad ++所做的方法,即

#!/bin/sh

"c:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$*"
Run Code Online (Sandbox Code Playgroud)

用过:

#!/bin/sh

"C:\Users\gep13\AppData\Local\Code\app-0.1.0\Code.exe" "$*"
Run Code Online (Sandbox Code Playgroud)

但这会导致错误消息:

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]>
Run Code Online (Sandbox Code Playgroud)

代码打开正确,具有预期的内容,但它没有等待响应,即单击保存并关闭窗口以返回提示.

更新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版本的代码.

rex*_*ghk 577

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

  1. 确保您可以从命令行运行code --help并获得帮助.
    • 如果您没有看到帮助,请按以下步骤操作:
      • Mac:选择Shell命令:在命令选项板的路径中安装"代码"命令.
      • Windows:确保在安装期间选择了" 添加到PATH ".
      • Linux:确保通过我们的新.deb或.rpm软件包安装了Code.
  2. 从命令行运行 git config --global core.editor "code --wait"

现在您可以运行git config --global -e并使用VS Code作为编辑器来配置Git. 在此输入图像描述 添加以下内容以支持将VS Code用作diff工具:

[diff]
    tool = default-difftool
[difftool "default-difftool"]
    cmd = code --wait --diff $LOCAL $REMOTE
Run Code Online (Sandbox Code Playgroud)

这利用了--diff您可以传递给VS Code 的新选项,以并排比较两个文件.

总结一下,这里有一些例子,你可以在哪里使用Git和VS代码:

  • git rebase HEAD~3 -i 允许使用VS Code进行交互式rebase
  • git commit 允许使用VS Code作为提交消息
  • git add -p然后e进行交互式添加
  • git difftool <commit>^ <commit> 允许使用VS Code作为差异编辑器进行更改

  • 我还发现addinng` - new-window`对命令有帮助.这样git操作将在新窗口中打开. (68认同)
  • 现在可以使用合并: [merge] tool = vscode [mergetool "vscode"] cmd = code --wait $MERGED (5认同)
  • 我不得不使用`git config core.editor'代码-n -wait"`与VS Code 1.17.2,从外部命令行运行.`code`和`code --wait`都让我得到了"由于空提交消息而中止提交". (4认同)
  • 当我们谈论_command line_时,我们的意思是`Ctrl + Shift + P`?我没有工作(没有'代码 - help`可用),我不明白是什么意思:"确保你在安装过程中选择添加到PATH"我该怎么做才能检查它?有人可以帮帮我吗? (2认同)
  • 注意从v1.1开始,你需要禁用"热退出"或记得在退出vscode之前显式保存文件,否则git将看不到任何更改.如果您希望在退出时提醒保存,可以通过编辑用户设置来禁用此功能:在配置底部插入""files.hotExit":"off"` (2认同)

Gau*_*nda 117

git config --global core.editor "code --wait"
Run Code Online (Sandbox Code Playgroud)

或者

git config --global core.editor "code -w"
Run Code Online (Sandbox Code Playgroud)

验证:

git config --global -e
Run Code Online (Sandbox Code Playgroud)

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


Fra*_*her 29

据我所知,VSCode不再在AppData中了.

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

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

参数-w,--wait是在返回之前等待窗口关闭.Visual Studio代码基于Atom编辑器.如果你还安装了原子,则执行命令atom --help.您将看到帮助中的最后一个参数是等待.

下次执行此操作时git rebase -i HEAD~3,将弹出Visual Studio Code.一旦VSCode关闭,Git将收回领先优势.

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

我希望有所帮助.

  • 现在,这似乎不再适用于VS Code的最新更新.你有什么想法?谢谢! (10认同)
  • @GaryEwanPark:您需要从*bin*子目录启动*code.cmd*(或*code*on\*nix),以使命令行选项起作用.理想情况下,您可以将*bin*子目录添加到%PATH%环境变量中(安装程序也会为您执行此操作),并配置运行`git config --global core.editor"的编辑器代码 - "". (2认同)

Rus*_*nko 23

另一个有用的选项是设置EDITOR环境变量。许多实用程序使用此环境变量来了解要使用的编辑器。如果没有core.editor设置,Git 也会使用它。

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

export EDITOR="code --wait"
Run Code Online (Sandbox Code Playgroud)

不仅如此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
Run Code Online (Sandbox Code Playgroud)

这样当您使用本地终端时,$SSH_CONNECTION环境变量将为空,因此code -w将使用编辑器,但是当您通过 SSH 连接时,则$SSH_CONNECTION环境变量将是一个非空字符串,因此vim将使用编辑器。它是控制台编辑器,因此即使您通过 SSH 连接它也能工作。

  • 我发现,至少在 macOS 上使用 Git 2.30.1 时,如果未提供“core.editor”配置,Git 将使用“$VISUAL”环境变量,而不是“$EDITOR”。所以我喜欢这个答案,但我还在 `fi` 下面添加了一行,指出 `export VISUAL="$EDITOR"` 来同步它们。 (3认同)

小智 16

我添加一个答案是因为所有其他答案都不够简洁,不符合我的喜好/不适合我的具体情况。我正在运行配备 M1 芯片的 MacBook Air 2021

\n

要将 VS Code 设为 VS Code 中的默认 git 编辑器:

\n

步骤1

\n

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

\n

第2步

\n

如果您尝试在此阶段进行提交,您可能会收到如下错误:

\n

“提示:正在等待编辑器关闭文件...代码-w:代码:找不到命令\n错误:编辑器\'代码-w\'出现问题”。

\n

这意味着您没有在 VS Code 中安装 shell 命令“code”。使用 (command + shift + p) 在 VS Code 中打开命令中心。搜索“code”并选择“Shell 命令:在 PATH 中安装 \xe2\x80\x98code\xe2\x80\x99 命令”。这会将“代码”添加到您的路径中。

\n

步骤3

\n

在尝试安装“代码”时,您可能会收到如下错误:

\n

“EACCES:权限被拒绝,取消链接\'/usr/local/bin/code\'”。

\n

我不知道是什么原因导致此问题,但简单的卸载并重新安装即可解决该问题。要卸载,请在 VS Code 命令中心搜索“卸载”,然后选择“Shell 命令:卸载 PATH 中的 \xe2\x80\x98code\xe2\x80\x99 命令”

\n

步骤4

\n

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

\n

资料来源:

\n

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

\n

VS Code 拒绝权限取消链接“usr/local/bin/code”

\n


Ilu*_*Kuk 11

您需要使用命令:

git config --global core.editor "'C:\Program Files\Microsoft VS Code\code.exe' -n -w"
Run Code Online (Sandbox Code Playgroud)

确保你可以从Git Bash开始编辑

如果要使用具有短路径的Code.exe,可以通过将以下行添加到.bash_profile来执行此操作:

alias vscode="C:/Program\ Files/Microsoft\ VS\ Code/Code.exe"
Run Code Online (Sandbox Code Playgroud)

现在,您可以仅使用vscode命令(或任何您命名的命令)来调用它

一些额外的信息:

安装程序会将Visual Studio代码添加到%PATH%,因此您可以在控制台中键入"code"以在该文件夹上打开VS Code.安装后需要重新启动控制台才能使更改为%PATH%环境变量生效.

  • `-n` 是 `--new-window` 的缩写,让 git 打开一个新的编辑器窗口,而 `-w` 是 `--wait` 的缩写,让 git 等待你再次关闭窗口。这是唯一对我有用的答案,因为如果我已经打开了 VS Code,`--wait` 将无法在没有 `--new-window` 的情况下工作。 (2认同)