Git için Visual Studio Code Varsayılan Düzenleyici olarak nasıl kullanılır


365

Git komut satırında kullanırken, Visual Studio Code'u varsayılan düzenleyici olarak kullanmanın mümkün olup olmadığını merak ediyorum, yani komut yorumları oluştururken ve komut satırından bir dosyanın farkına bakarken.

Birleştirme (en azından dakikada) için kullanmak mümkün olmayacağını anlıyorum, ancak diff'e bakmak için kullanmanın mümkün olup olmadığını ve eğer öyleyse, hangi komut satırı seçeneklerinin gerekli olacağını biliyor mu? Bunu yapmak için .gitconfig dosyası?

GÜNCELLEME 1:

Notepad ++ için geçmişte ne yaptığımıza benzer bir yaklaşım denedim , yani

#!/bin/sh

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

Kullanılan:

#!/bin/sh

"C:\Users\gep13\AppData\Local\Code\app-0.1.0\Code.exe" "$*"

Ancak bu bir hata mesajıyla sonuçlanır:

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]>

Kod, beklenen içerikle doğru bir şekilde açılıyor, ancak yanıtı beklemiyor, yani, isteme geri dönmek için kaydet ve pencereyi kapat'ı tıklıyor.

GÜNCELLEME 2:

VSCode üzerinde çalışan geliştiricilerin birinden duydum. Bu işlevin şu anda desteklenmediği anlaşılıyor :-(

https://twitter.com/IsidorN/status/595501573880553472

Bu özelliğin eklendiğini görmek istiyorsanız, oylarınızı buraya eklemeyi düşünebilirsiniz:

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

GÜNCELLEME 3:

Ben edilmiş güvenilir haberdar bunu içerecek bir sürümde için sabırsızlanıyorum bu özellik, VSCode ekibi tarafından yakalandı edildiğini.

GÜNCELLEME 4:

Aşağıdaki @ f-boucheros yorum sayesinde, VS Kod taahhüt yorumlar, rebase, vb için varsayılan düzenleyici olarak çalıştırabildim. Yine de diff aracı olarak kullanmanın mümkün olup olmadığını görmek istiyorum.

GÜNCELLEME 5:

Sorunun kabul edilen cevabına göre, bu artık kodun V1.0 sürümü kullanılarak mümkün.

Yanıtlar:


675

En son sürümde ( Mart 2016'da piyasaya sürülen v1.0 ) artık VS Kod'u varsayılan git commit / diff aracı olarak kullanabilirsiniz . Belgelerden alıntı:

  1. code --helpKomut satırından çalıştırabildiğinizden ve yardım aldığınızdan emin olun .

    • yardım görmüyorsanız lütfen aşağıdaki adımları izleyin:

      • Mac: Kabuk Komutu'nu seçin : 'Kod' komutunu Komut Paletinden yola yükleyin .

        • Komut Paleti, VS Kodunun içindeyken shift+ + tuşuna bastığınızda açılan şeydir P. ( Windows'ta shift+ ctrl+ P)
      • Windows: Yükleme sırasında PATH'ye Ekle'yi seçtiğinizden emin olun .
      • Linux: Code'u yeni .deb veya .rpm paketlerimizle yüklediğinizden emin olun.
  2. Komut satırından çalıştırın git config --global core.editor "code --wait"

Artık git config --global -eGit'i yapılandırmak için VS Code'u editör olarak çalıştırabilir ve kullanabilirsiniz. resim açıklamasını buraya girin VS Kodunu diff aracı olarak kullanma desteğini etkinleştirmek için aşağıdakileri ekleyin:

[diff]
    tool = default-difftool
[difftool "default-difftool"]
    cmd = code --wait --diff $LOCAL $REMOTE

Bu, --diffiki dosyayı yan yana karşılaştırmak için VS Code'a iletebileceğiniz yeni seçeneği kullanır.

Özetlemek gerekirse, Git'i VS Kodu ile nerede kullanabileceğinize dair bazı örnekler:

  • git rebase HEAD~3 -i VS Kodu kullanarak etkileşimli yeniden taban oluşturmaya izin verir
  • git commit taahhüt mesajı için VS Kodu kullanılmasına izin verir
  • git add -pardından eetkileşimli ekleme için
  • git difftool <commit>^ <commit> VS Code'un değişiklikler için diff editör olarak kullanılmasına izin verir

84
Ayrıca yardımcı --new-windowolmak için komut addinng buldum . Bu şekilde git işlemi yeni bir pencerede açılır.
jrotello

2
Komut satırı hakkında konuştuğumuzda ne demek istiyoruz Ctrl+Shift+P? Benimki çalışmıyor (mevcut code --helpdeğil) ve ne anlama geldiğini anlamıyorum: "Yükleme sırasında PATH'ye ekle'yi seçtiğinizden emin olun" Bunu kontrol etmek için ne yapmalıyım? Birisi bana yardım edebilir mi?
Paolo Falomo

2
V1.1'den itibaren "hot çıkış" ı devre dışı bırakmanız veya vscode'dan çıkmadan önce dosyayı açıkça kaydetmeyi unutmayın, aksi takdirde git herhangi bir değişiklik görmez. Çıkışta kaydetmenizi hatırlatmayı tercih ediyorsanız, kullanıcı ayarlarınızı düzenleyerek bu özelliği devre dışı bırakabilirsiniz: "files.hotExit": "off"Yapılandırmanızın altına ekleyin
Jack Ukleja

6
git config core.editor "code -n --wait"Harici komut satırından çalışan VS Kod 1.17.2 ile kullanmak zorunda kaldı . Hem codeve code --wait"durduruluyor mesajı işlemek boşaltmak nedeniyle taahhüt." Got me
Robert Calhoun

3
Ve birleştirme de şu anda kullanılabilir: [merge] tool = vscode [mergetool "vscode"] cmd = code --wait $ MERGED
Sting

31

Ne anlamak için, VSCode artık AppData değil.

Bu komutu komut istemi penceresinde yürüterek varsayılan git düzenleyicisini ayarlayın:

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

Parametre -w, --waitgeri dönmeden önce pencerenin kapanmasını beklemektir. Visual Studio Code Atom Düzenleyicisi'nin temelidir. Ayrıca atomunuz yüklüyse komutu yürütün atom --help. Yardımdaki son argümanın beklemek olduğunu göreceksiniz.

Bir dahaki sefere bunu yaptığınızda git rebase -i HEAD~3Visual Studio Code açılır. VSCode kapatıldıktan sonra Git, ipucunu geri alacaktır.

Not: Geçerli VSCode sürümüm 0.9.2

Umarım bu yardımcı olur.


Teşekkürler! Bunun önemi nedir -wve bu belgeyi nerede buldunuz?
Gary Ewan Park

1
İyi bir nokta. Atom'dan -w beklemek içindir. Cevabımı düzenledim.
Frank Boucher

Bunu ayarladım ve işe yaradığını söylemekten mutluluk duyuyorum. Ben şimdi dosyaları da farklı yapıyor Visual Studio Code olarak çalışmak için alabilir, bu harika olurdu! :-)
Gary Ewan Park

10
bu artık VS Code'un en son güncellemesi ile çalışmıyor gibi görünüyor. Hiç fikrin var mı? Teşekkürler!
Gary Ewan Park

2
@GaryEwanPark: Komut satırı seçeneklerinin çalışması için bunun yerine bin alt dizininden code.cmd (veya * nix üzerinde kod) başlatmanız gerekir . İdeal olarak bin alt dizinini% PATH% ortam değişkeninize ekler (yükleyici bunu sizin için de yapar) ve çalışan düzenleyiciyi yapılandırırsınız . git config --global core.editor "code --wait"
Ağustos'ta

13

Komutu kullanmanız gerekir:

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

Editörünüzü Git Bash'ten başlatabildiğinizden emin olun

Code.exe'yi kısa yolla kullanmak istiyorsanız, bunu .bash_profile dosyanıza aşağıdaki satırı ekleyerek yapabilirsiniz:

alias vscode="C:/Program\ Files/Microsoft\ VS\ Code/Code.exe"

Ve şimdi, sadece vscodekomutu (veya adını verdiğiniz her şeyi) kullanarak çağırabilirsiniz.

Bazı ek bilgiler:

Kur, Visual Studio Code% PATH% 'nize ekleyecektir, böylece konsoldan bu klasörde VS Kodu açmak için' kod 'yazabilirsiniz. % PATH% çevresel değişkenindeki değişikliğin geçerli olması için kurulumdan sonra konsolunuzu yeniden başlatmanız gerekecektir.


1
-nkısaltmasıdır --new-windowyeni editör penceresini açmak git yaparak ve -wkısa içindir --waityeniden penceresini kapatmak için git beklemek yapım. Bu zaten benim için çalışan tek cevap, çünkü ben zaten VS Kod açık varsa --waitolmadan çalışmaz --new-window.
Jan Aagaard

12

Başka bir kullanışlı seçenek de EDITORortam değişkenini ayarlamaktır . Bu ortam değişkeni birçok yardımcı program tarafından hangi düzenleyicinin kullanılacağını bilmek için kullanılır. Git core.editor, ayarlanmamışsa da kullanır .

Geçerli oturum için aşağıdakileri kullanarak ayarlayabilirsiniz:

export EDITOR="code --wait"

Bu şekilde sadece gitdiğer birçok uygulama VS Code'u editör olarak kullanacaktır.

Bu değişikliği kalıcı hale getirmek için ~/.profile, örneğin bunu ekleyin . Daha fazla seçenek için bu soruya bakın .


Bu yaklaşımın bir başka avantajı, farklı durumlar için farklı editörler ayarlayabilmenizdir:

  1. Yerel terminalden çalışırken.
  2. SSH oturumu üzerinden bağlandığınızda.

GUI olmadan çalışmadığından, özellikle VS Kodu (veya başka bir GUI düzenleyicisi) ile kullanışlıdır.

Linux işletim sisteminde, bunu aşağıdakilere ekleyin ~/.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

Bu şekilde, yerel bir terminal kullandığınızda, $SSH_CONNECTIONortam değişkeni boş olur, bu nedenle code -wdüzenleyici kullanılır, ancak SSH aracılığıyla bağlandığınızda, $SSH_CONNECTIONortam değişkeni boş olmayan bir dize olur, bu nedenle vimdüzenleyici kullanılır. Konsol düzenleyicisidir, bu yüzden SSH aracılığıyla bağlandığınızda bile çalışır.


2

Ben açtım .gitconfigve değiştirdim:

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

Bu benim için yaptı (Windows 8'deyim).

Ben keyfi çalışması sonrasında Ancak, bunu fark git commitbenim o Git Bash konsola aşağıdaki iletiyi görürsünüz:

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

Bunun sonuçlarının ne olabileceğinden emin değilim.


Ben de denedim, ancak, ben "ölümcül: C: \ Users \ gep13 / .gitconfig" kötü yapılandırma dosya satırı 14 alıyordum sonra eğik çizgiler, nerede eğik çizgiler var fark ettim. Bu turu değiştirmek işe yaradı, ama sizin gibi "Renderer işlemi başladı" çıktısını görüyorum, bu benim için iki kez çıktı veriyor ve sonra şunu gösteriyor: "[11956: 0504/091108: HATA: ipc_channel_win.cc (136)] boru hata: 109 "gibi görünüyor.
Gary Ewan Park

Ah, ilginç. Görünüşe göre benim önerim sadece Taahhüt yapmadan önce Kod'u tamamen kapattıysanız (çok uygun değil!) Çalışır . Kod açıksa, güncellemenizde bildirdiğiniz hatayla karşılaşıyorum.
miqh

gerçekten ilginç. Notepad ++ için -multiInst bayrağı devreye giriyor. VSCode için benzer bir şey olup olmadığını merak ediyorum.
Gary Ewan Parkı

Sadece FYI, app-0.1.0/resources/app/env.jsKod yürütülebilir dosyasının aldığı birkaç komut satırı bayrağı içeriyor gibi görünüyor. Hiçbiri, -multiInstyine de buna eşdeğer davranış önermez .
miqh

--waitbayrağı eklemeniz gerekir ve --new-windowbayrak da şiddetle tavsiye edilir, böylece msg / diff / what komutu zaten açık olan bir düzenleyicide yeni bir sekme olarak görünmez ve dosyaları kapatmanızı gerektirir. üzerinde çalıştığınızı işaretlemek için çalışıyoruz.
Eşzamanlı

2

İyi haberler! Yazım sırasında, bu özellik zaten hayata geçirildi 0.10.12-içerdekilerin serbest bırakılması ve içinden yürütülen 0.10.14-içeriden . Bu yüzden önümüzdeki sürüm VS Kod sürümünde olacak .

Uygulama Ref: -w / - Gerçekleştir komut satırı arg


Git'te diff'leri görüntülemek için VSCode içindeki diff görüntüleyiciyi nasıl kullanabileceğim hakkında yorum yapabilir misiniz?
Gary Ewan Park

1

GitPad geçerli metin düzenleyicinizi Git için varsayılan düzenleyici olarak ayarlar.

.txtWindows 10'daki dosyalar için varsayılan düzenleyicim Visual Studio Code'dur ve GitPad'i çalıştırdığınızda onu Git için varsayılan düzenleyici yaptı. Soruda belirtilen sorunları yaşamadım (Git benim durumumda VS Code penceresi kapanana kadar bekler).

(Dosya bağlantısı .exebenim için çalışmadı, kaynağı kendiniz derlemeniz gerekebilir.)


Varsayılan editör olarak neye işaret ettiniz? Burada anlatılanları kullanmaya çalıştım: donovanbrown.com/post/2015/07/07/… Ama bu çalışmak istemiyor gibi görünüyor. Kod güncellendikçe değişeceğinden, belirli bir exe'ye gerçekten bakmak istemiyorum.
Gary Ewan Park

1
Ben ne zaman @Gary, ben belirli bir dosyayı işaret yoktu, Kod listesinde oldu Right click> Open with> Chose another app. Ben kurulum kendini kayıt beklemek (ve kabuk bulabilirsiniz böylece her güncelleştirme ile kayıt defteri güncelleme) ama ben kayıt defterinde "Kod ile Aç" bağlam menü öğesi dışında bir şey bulamadı. Yani bunun için daha net bir cevabım yok, üzgünüm.
Şafak Gür

Hmm, bu garip, bunu yaptığımda görünen listede bir giriş olarak kodum yok.
Gary Ewan Park

1

Sadece bu geri eğik çizgileri önceki yanıtlara eklemek istiyorum, Windows 10 CMD'deyim ve boşluklardan önce ters eğik çizgiler olmadan çalışmıyor.

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

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

0

Bunu yapabileceğinizden emin değilim, ancak gitconfig dosyanızda bu eklemeleri deneyebilirsiniz.

Visual Studio kodu yürütülebilir işaret edecek şekilde bu değerlerden kdiff3 değiştirmeye çalışın.

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


Sorumda belirttiğim gibi, birleştirme işleminin destekleneceğini düşünmüyorum, çünkü Visual Studio Code'un bunu nasıl yapacağını bildiğini düşünmüyorum, sadece farklı ve mesajlaşma yapabileceğinden şüpheleniyorum.
Gary Ewan Parkı

0

Visual Studio Code'u varsayılan olarak .txt dosyasını açacak şekilde ayarladım. Ve ertesi Ben kullanımı basit komutu yaptı: git config --global core.editor "'C:\Users\UserName\AppData\Local\Code\app-0.7.10\Code.exe\'". Ve her şey gayet iyi çalışıyor.


0

Bu komutu Mac Terminal uygulamanızda çalıştırın

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

2
Hata iletisini aldığınız için bu pek işe yaramıyor: Boş taahhüt mesajı nedeniyle kesinti iptal ediliyor. Bir bekleme bayrağının eklenmesi gerekir. Örneğin - bekleyin.
Belfield

0

Windows 10'da 64bit Insider Edition kullanan komut şöyle olmalıdır:

git config --global core.editor "'C: \ Program Dosyaları \ Microsoft VS Kod İçerileri \ bin \ code-insiders.cmd'"

'Program Files' dizinindeki 'code-insiders.cmd' dosyasını 'code.cmd' olarak yeniden adlandırabilirsiniz, böylece artık 'kod' komutunu kullanabilirsiniz. üzerindeki dosyaları düzenlemeye başlamak için. rehber

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.