Visual StudioコードをGitのデフォルトエディターとして使用する方法


365

コマンドラインでgitを使用する場合、デフォルトのエディターとしてVisual Studio Codeを使用できるかどうか、つまりコミットコメントを作成する場合や、コマンドラインからファイルのdiffを確認する場合などです。

マージを実行するためにそれを使用することは不可能であることを理解しています(少なくとも1分では)が、それをdiffの確認に使用できるかどうか、そしてもしそうなら、どのコマンドラインオプションが必要かを知っています。これを実現するための.gitconfigファイル?

更新1:

私は過去にNotepad ++に対して行ったのと同様のアプローチを試しました、すなわち

#!/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に取り組んでいる開発者の1人から返信がありました。この機能は現在サポートされていないようです:-(

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をコミットコメント、リベースなどのデフォルトエディターとして機能させることができました。それをdiffツールとしても使用できるかどうか確認したいと思います。

更新5:

承認された質問の回答に従って、これはコードのV1.0リリースを使用して可能になりました。

回答:


674

最新のリリース(v1.0、2016年3月にリリース)では、VS Codeをデフォルトのgit commit / diffツールとして使用できるようになりました。ドキュメントから引用:

  1. code --helpコマンドラインから実行できることを確認すると、ヘルプが表示されます。

    • ヘルプが表示されない場合は、次の手順に従ってください。

      • Mac:シェルコマンドを選択コマンドパレットからパスに「コード」コマンドをインストールします

        • コマンドパレットは、VSコード内でshift+ + Pを押すとポップアップするものです。(Windowsではshift+ ctrl+ P
      • Windows:インストール時に[PATH追加]を選択したことを確認してください。
      • Linux:新しい.debまたは.rpmパッケージを使用してコードをインストールしたことを確認してください。
  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

これは、--diffVS Codeに渡すことができる新しいオプションを利用して、2つのファイルを並べて比較します。

まとめると、VS CodeでGitを使用できる場所の例をいくつか示します。

  • git rebase HEAD~3 -i VS Codeを使用してインタラクティブにリベースできます
  • git commit コミットメッセージにVSコードを使用できます
  • git add -peインタラクティブな追加のために続く
  • git difftool <commit>^ <commit> VSコードを変更の差分エディターとして使用できます

84
また--new-window、コマンドへの追加が役立つこともわかりました。これにより、git操作が新しいウィンドウで開きます。
jrotello

2
我々はについて語るとき、コマンドライン我々は意味しますかCtrl+Shift+P?鉱山が機能していない(code --help利用できない)と私は何を意味するのか理解できません:「インストール中にPATHに追加を選択したことを確認してください」確認するにはどうすればよいですか?誰かが私を助けてくれますか?
Paolo Falomo 2016

2
v1.1以降では、「ホット終了」を無効にする必要があるか、vscodeを終了する前にファイルを明示的に保存することを忘れないでください。そうしないと、gitで変更が表示されません。終了時に保存するよう"files.hotExit": "off"
通知

6
git config core.editor "code -n --wait"外部コマンドラインから実行するVS Code 1.17.2 を使用する必要がありました。両方codecode --wait私を得た「アボートは、コミットメッセージを空に起因するコミットします。」
Robert Calhoun

3
そしてマージも利用可能になりました:[merge] tool = vscode [mergetool "vscode"] cmd = code --wait $ MERGED
Sting

31

私の理解では、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どこにあり、どこに文書化されていると思いましたか?
Gary Ewan Park

1
いい視点ね。それはAtomから来ています-wは待機用です。回答を編集しました。
フランクブーシェ

私はこれを設定しました、そしてそれが機能していると言ってうれしいです。これをVisual Studio Codeがファイルの差分処理も行うように動作させることができれば、すばらしいことです。:-)
Gary Ewan Park

10
これは現在、VS Codeの最新のアップデートでは機能しないようです。あなたはなにか考えはありますか?ありがとう!
Gary Ewan Park

2
@GaryEwanPark:コマンドラインオプションを機能させるには、代わりにbinサブディレクトリからcode.cmd(または* nixのコード)を起動する必要があります。理想的には、%PATH%環境変数にbinサブディレクトリを追加し(インストーラーも実行します)、エディターを実行するように構成します。git config --global core.editor "code --wait"
IInspectable 2017

13

コマンドを使用する必要があります:

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%環境変数への変更を有効にするには、インストール後にコンソールを再起動する必要があります。


1
-n--new-window、gitに新しいエディターウィンドウを開くことを示す略語で、-wを省略して--wait、ウィンドウを閉じるまでgitに待機させます。これが私にとって有効な唯一の答えです。私が既にVS Codeを開いている場合、--waitなしでは機能しません--new-window
Jan Aagaard 2018年

11

別の便利なオプションは、EDITOR環境変数を設定することです。この環境変数は、使用するエディターを知るために多くのユーティリティで使用されます。no core.editorが設定されている場合、Gitはそれも使用します。

次のコマンドを使用して、現在のセッションに設定できます。

export EDITOR="code --wait"

この方法だけgitでなく、他の多くのアプリケーションがVSコードをエディターとして使用します。

この変更を永続的にするには、~/.profileたとえばこれをに追加します。その他のオプションについては、この質問を参照してください。


このアプローチのもう1つの利点は、さまざまなケースにさまざまなエディターを設定できることです。

  1. ローカル端末から作業する場合。
  2. SSHセッションを介して接続している場合。

これはGUIなしでは機能しないため、特にVS Code(またはその他のGUIエディター)で役立ちます。

Linux OSでは、これを次の場所に配置します~/.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

このように、ローカルターミナルを使用すると、$SSH_CONNECTION環境変数は空になるため、code -wエディターが使用されますが、SSH経由で接続されている場合、$SSH_CONNECTION環境変数は空でない文字列になるため、vimエディターが使用されます。これはコンソールエディターなので、SSH経由で接続している場合でも機能します。


2

私は私を開き、.gitconfigそれを次のように修正しました:

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

私はそれを行いました(私はWindows 8を使用しています)。

しかし、私git commitが自分で任意のものを試した後、にGit BashのコンソールI次のメッセージが表示されます。

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

これの影響が何であるかわからない。


私もそれを試しましたが、「致命的:C:\ Users \ gep13 / .gitconfigの構成ファイルの14行目が不正です」と表示され、バックスラッシュがあり、そこにフォワードスラッシュがあります。これらのラウンドを変更すると機能しましたが、「レンダラープロセスが開始されました」という出力が表示されます。これは、実際には2回出力され、次に「[11956:0504/091108:ERROR:ipc_channel_win.cc(136)] pipeと表示されます。エラー:109インチですが、実際にはコミットが機能しているようです。
ゲイリーユアンパーク

ああ、面白い。私の提案は、コミットを行う前コードを完全に閉じた場合(あまり便利ではない!)にのみ機能するようです。コードが開いている場合、アップデートで報告したのと同じエラーが発生します。
miqh

確かに興味深い。ここでNotepad ++の-multiInstフラグが機能するようになります。VSCodeにも似たようなものがあるのでしょうか。
ゲイリーユアンパーク

参考までにapp-0.1.0/resources/app/env.js、コード実行可能ファイルが使用するいくつかのコマンドラインフラグが含まれているようです。-multiInstただし、それと同等の動作を示唆するものはありません。
miqh

--waitフラグを追加する必要があり、--new-windowフラグも強くお勧めします。これにより、コミットmsg / diff / whateverは、すでに開いているエディターで新しいタブとして表示されるだけでなく、ファイルを閉じる必要があります。編集が完了したことをgitに知らせるために作業しています。
アイソクロナス

1

GitPadは、現在のテキストエディターをGitのデフォルトエディターとして設定します。

私のデフォルトのエディター .txtWindows 10ファイルのはVisual Studio Codeで、GitPadを実行するとGitのデフォルトエディターになりました。私は質問で述べた問題を経験していません(私の場合、VS Codeウィンドウが閉じるまでGitは待機します)。

.exeファイルのリンクが機能しませんでした。ソースを自分でコンパイルする必要があるかもしれません。)


デフォルトのエディターとして何を指摘しましたか?ここに記載されているものを使用しようとしました:donovanbrown.com/post/2015/07/07/…しかし、それはうまくいきたくないようです。コードが更新されると変更されるため、実際には特定のexeを指定する必要はありません。
Gary Ewan Park、

1
私が行ったとき@Gary、私は特定のファイルをポイントする必要はありませんでした、コードはリストにありましたRight click> Open with> Chose another app。セットアップ時にそれ自体登録されることを期待します(そして、シェルがそれを見つけることができるように、すべての更新でレジストリを更新します)が、レジストリで「コードで開く」コンテキストメニュー項目以外は何も見つかりませんでした。ですから、これに対する明確な答えは本当にありません。
–ŞafakGür2015

うーん、それは奇妙なことです。そうすると表示されるリストのエントリとしてコードがありません。
Gary Ewan Park


1

これらのバックスラッシュを以前の回答に追加したいだけです。私はWindows 10 CMDを使用しています。スペースの前にバックスラッシュがないと機能しません。

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

git config --global core.editor "'C:\ Users \ cbre_admin \ AppData \ Local \ Programs \ Microsoft VS Code \ Code.exe' -w"
rjt011000

0

これを実行できるかどうかはわかりませんが、gitconfigファイルでこれらの追加を試すことができます。

これらの値からkdiff3を置き換えて、Visual Studioコード実行可能ファイルを指すようにしてください。

[merge] tool = kdiff3 [mergetool "kdiff3"] path = C:/Program Files/KDiff3/kdiff3.exe keepBackup = false trustExitCode = false


私の質問で述べたように、Visual Studio Codeがこれを行う方法を知っているとは思わないので、マージがサポートされるとは思わないので、diffとcommitメッセージングしか実行できないと思います。
Gary Ewan Park、

0

.txtファイルを開くデフォルトとしてVisual Studio Codeを設定しました。次に、単純なコマンドを使用しましたgit config --global core.editor "'C:\Users\UserName\AppData\Local\Code\app-0.7.10\Code.exe\'"。そして、すべてがかなりうまくいきます。


0

Macターミナルアプリでこのコマンドを実行します

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

2
エラーメッセージ「空のコミットメッセージのためにコミットを中止します」が表示されるため、これはうまく機能しません。待機フラグを追加する必要があります。たとえば、-waitです。
Belfield 2017

0

64ビットインサイダーエディションを使用する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」コマンドを使用できるようになります。でファイルの編集を開始します。ディレクトリ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.