Cara menggunakan Visual Studio Code sebagai Editor Default untuk Git

365

Saat menggunakan git di baris perintah, saya bertanya-tanya apakah mungkin menggunakan Visual Studio Code sebagai editor default, yaitu saat membuat komentar komit, dan melihat perbedaan file dari baris perintah.

Saya mengerti bahwa itu tidak akan mungkin untuk menggunakannya untuk melakukan penggabungan (setidaknya pada saat ini) tetapi apakah ada yang tahu apakah mungkin untuk menggunakannya untuk melihat diff, dan jika demikian, opsi baris perintah apa yang akan diperlukan dalam file .gitconfig untuk mewujudkannya?

PEMBARUAN 1:

Saya telah mencoba pendekatan yang mirip dengan apa yang telah saya lakukan untuk Notepad ++ di masa lalu , yaitu

#!/bin/sh

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

Dan digunakan:

#!/bin/sh

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

Tetapi ini menghasilkan pesan kesalahan:

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

Kode terbuka dengan benar, dengan konten yang diharapkan, tetapi tidak menunggu jawaban, yaitu mengklik simpan dan tutup jendela untuk kembali ke prompt.

PEMBARUAN 2:

Saya baru saja mendengar kabar dari salah satu pengembang yang bekerja pada VSCode. Sepertinya fungsi ini saat ini tidak didukung :-(

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

Jika Anda tertarik melihat fitur ini ditambahkan, Anda mungkin ingin mempertimbangkan untuk menambahkan suara Anda di sini:

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

PEMBARUAN 3:

Saya telah diberitahu dengan andal bahwa fitur ini telah diambil oleh tim VSCode, jadi saya menantikan rilis mendatang yang akan memasukkannya.

PEMBARUAN 4:

Berkat @ f-boucheros komentar di bawah ini, saya bisa mendapatkan VS Code berfungsi sebagai editor default untuk komit komentar, rebase, dll. Saya masih ingin melihat apakah mungkin untuk menggunakannya sebagai alat diff juga.

PEMBARUAN 5:

Sesuai jawaban yang diterima untuk pertanyaan, ini sekarang mungkin menggunakan rilis kode V1.0.

Taman Gary Ewan
sumber

Jawaban:

674

Dalam rilis terbaru (v1.0, dirilis pada Maret 2016 ), Anda sekarang dapat menggunakan VS Code sebagai alat git commit / diff default . Dikutip dari dokumentasi:

  1. Pastikan Anda dapat menjalankan code --helpdari baris perintah dan Anda mendapatkan bantuan.

    • jika Anda tidak melihat bantuan, harap ikuti langkah-langkah ini:

      • Mac: Pilih Shell Command: Instal perintah 'Code' di jalur dari Command Palette.

        • Command Palette adalah apa yang muncul ketika Anda menekan shift+ + Psaat berada di dalam VS Code. ( shift+ ctrl+ Pdi Windows)
      • Windows: Pastikan Anda memilih Tambahkan ke PATH selama instalasi.
      • Linux: Pastikan Anda menginstal Kode melalui paket .deb atau .rpm kami yang baru.
  2. Dari baris perintah, jalankan git config --global core.editor "code --wait"

Sekarang Anda dapat menjalankan git config --global -edan menggunakan Kode VS sebagai editor untuk mengkonfigurasi Git. masukkan deskripsi gambar di sini Tambahkan yang berikut untuk mengaktifkan dukungan untuk menggunakan Kode VS sebagai alat diff:

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

Ini memanfaatkan --diffopsi baru yang dapat Anda berikan ke VS Code untuk membandingkan dua file berdampingan.

Untuk meringkas, berikut adalah beberapa contoh di mana Anda dapat menggunakan Git dengan Kode VS:

  • git rebase HEAD~3 -i memungkinkan untuk rebase interaktif menggunakan VS Code
  • git commit memungkinkan untuk menggunakan Kode VS untuk pesan komit
  • git add -pdiikuti oleh euntuk menambahkan interaktif
  • git difftool <commit>^ <commit> memungkinkan untuk menggunakan Kode VS sebagai editor berbeda untuk perubahan
rexcfnghk
sumber
84
Saya juga menemukan addinng --new-windowpada perintah untuk membantu. Dengan cara ini operasi git akan terbuka di jendela baru.
jrotello
2
Ketika kita berbicara tentang baris perintah yang kita maksud Ctrl+Shift+P? Tambang saya tidak berfungsi (tidak code --helptersedia) dan saya tidak mengerti apa artinya: "Pastikan Anda memilih Tambahkan ke PATH selama instalasi" Apa yang harus saya lakukan untuk memeriksanya? Bisakah seseorang tolong saya?
Paolo Falomo
2
Catatan pada v1.1 Anda harus menonaktifkan "keluar panas" atau ingat untuk secara eksplisit menyimpan file sebelum keluar dari vscode jika tidak git tidak akan melihat perubahan. Jika Anda lebih suka diingatkan untuk menghemat saat keluar, Anda dapat menonaktifkan fitur ini dengan mengedit pengaturan pengguna Anda: Masukkan "files.hotExit": "off"di bagian bawah konfigurasi Anda
Jack Ukleja
6
Saya harus menggunakan git config core.editor "code -n --wait"dengan Kode VS 1.17.2, berjalan dari baris perintah eksternal. Keduanya codedan code --waitmemberi saya "Batalkan komit karena pesan komit kosong."
Robert Calhoun
3
Dan gabung sekarang tersedia juga: [merge] tool = vscode [mergetool "vscode"] cmd = kode - tunggu $ MERGED
Sting
31

Untuk apa yang saya mengerti, VSCode sudah tidak ada di AppData lagi.

Jadi Atur git editor default dengan menjalankan perintah itu di jendela command prompt:

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

Parameter -w, --waitadalah menunggu jendela harus ditutup sebelum kembali. Visual Studio Code berbasis pada Atom Editor. jika Anda juga memiliki atom yang terinstal, jalankan perintah atom --help. Anda akan melihat argumen terakhir dalam bantuannya adalah wait.

Lain kali Anda melakukannya git rebase -i HEAD~3akan muncul Visual Studio Code. Setelah VSCode ditutup maka Git akan mengambil kembali memimpin.

Catatan: Versi VSCode saya saat ini adalah 0.9.2

Saya harap itu membantu.

Frank Boucher
sumber
Terima kasih! Apa pentingnya -wdan di mana Anda menemukan itu didokumentasikan?
Gary Ewan Park
1
Poin yang bagus. Itu datang dari Atom-w adalah untuk Tunggu. Saya mengedit jawaban saya.
Frank Boucher
Saya telah mengatur ini, dan saya senang mengatakan bahwa itu berfungsi. Jika saya bisa membuat ini berfungsi sekarang sebagai Visual Studio Code melakukan diffing file juga, itu akan bagus! :-)
Gary Ewan Park
10
ini sekarang tampaknya tidak lagi berfungsi dengan pembaruan terbaru ke Kode VS. Apakah Anda punya ide? Terima kasih!
Taman Gary Ewan
2
@GaryEwanPark: Anda harus menjalankan code.cmd (atau kode pada * nix) dari subdirektori bin sebagai gantinya, agar opsi baris perintah berfungsi. Idealnya Anda akan menambahkan subdirektori bin ke variabel lingkungan% PATH% Anda (installer juga melakukannya untuk Anda), dan mengonfigurasi editor yang sedang berjalan git config --global core.editor "code --wait".
IInspectable
13

Anda perlu menggunakan perintah:

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

Pastikan Anda dapat memulai editor Anda dari Git Bash

Jika Anda ingin menggunakan Code.exe dengan jalur pendek, Anda dapat melakukan ini dengan menambahkan baris berikut ke .bash_profile Anda:

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

Dan sekarang, Anda dapat menyebutnya hanya menggunakan vscodeperintah (atau apa pun namanya)

Beberapa info tambahan:

Setup akan menambahkan Visual Studio Code ke% PATH% Anda, jadi dari konsol Anda dapat mengetik 'kode' untuk membuka VS Code pada folder itu. Anda harus me-restart konsol Anda setelah instalasi untuk perubahan ke variabel lingkungan% PATH% agar berlaku.

IluxaKuk
sumber
1
-nsingkatan untuk --new-windowmembuat git membuka jendela editor baru, dan -wsingkat untuk --wait, membuat git menunggu Anda untuk menutup jendela lagi. Ini adalah satu-satunya jawaban yang berfungsi untuk saya, karena saya jika saya sudah membuka Kode VS --waittidak akan bekerja tanpa --new-window.
Jan Aagaard
11

Pilihan lain yang bermanfaat adalah mengatur EDITORvariabel lingkungan. Variabel lingkungan ini digunakan oleh banyak utilitas untuk mengetahui editor apa yang akan digunakan. Git juga menggunakannya jika tidak core.editordiatur.

Anda dapat mengaturnya untuk sesi saat ini menggunakan:

export EDITOR="code --wait"

Dengan cara ini tidak hanya git, tetapi banyak aplikasi lain akan menggunakan VS Code sebagai editor.

Untuk menjadikan perubahan ini permanen, tambahkan ini ke ~/.profilecontoh Anda. Lihat pertanyaan ini untuk lebih banyak opsi.


Keuntungan lain dari pendekatan ini adalah Anda dapat mengatur editor yang berbeda untuk berbagai kasus:

  1. Ketika Anda bekerja dari terminal lokal.
  2. Ketika Anda terhubung melalui sesi SSH.

Ini berguna terutama dengan VS Code (atau editor GUI lainnya) karena tidak berfungsi tanpa GUI.

Di OS Linux, masukkan ini ke ~/.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

Dengan cara ini ketika Anda menggunakan terminal lokal, $SSH_CONNECTIONvariabel lingkungan akan kosong, sehingga code -weditor akan digunakan, tetapi ketika Anda terhubung melalui SSH, maka $SSH_CONNECTIONvariabel lingkungan akan menjadi string yang tidak kosong, sehingga vimeditor akan digunakan. Ini adalah editor konsol, sehingga akan berfungsi bahkan ketika Anda terhubung melalui SSH.

Ruslan Stelmachenko
sumber
2

Saya membuka .gitconfigdan mengubahnya dengan:

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

Itu berhasil untuk saya (saya menggunakan Windows 8).

Namun, saya perhatikan bahwa setelah saya mencoba sewenang-wenang git commitdi konsol Git Bash saya, saya melihat pesan berikut:

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

Tidak yakin apa konsekuensi dari ini.

miqh
sumber
Saya juga telah mencoba itu, namun, saya mendapatkan "fatal: file config buruk baris 14 di C: \ Users \ gep13 / .gitconfig" maka saya perhatikan saya memiliki garis miring terbalik, di mana Anda memiliki garis miring. Mengubah putaran itu membuatnya bekerja, tetapi seperti Anda, saya melihat output "Proses penyaji dimulai", yang sebenarnya menghasilkan dua kali untuk saya, dan kemudian menunjukkan: "[11956: 0504/091108: KESALAHAN: ipc_channel_win.cc (136)] pipa kesalahan: 109 "tetapi komit sebenarnya tampaknya berhasil.
Gary Ewan Park
Ah, menarik. Tampaknya saran saya hanya berfungsi jika Kode Anda benar-benar tertutup (tidak nyaman!) Sebelum membuat commit. Saya menemukan kesalahan yang sama dengan yang Anda laporkan dalam pembaruan jika Kode terbuka.
miqh
memang menarik. Saya kira di situlah flag -multiInst untuk Notepad ++ akan ikut bermain. Saya ingin tahu apakah ada yang serupa dengan VSCode.
Gary Ewan Park
Hanya FYI, app-0.1.0/resources/app/env.jstampaknya berisi beberapa flag baris perintah yang dapat dieksekusi oleh Kode. Tidak ada yang menyarankan perilaku yang setara dengan itu -multiInst.
miqh
Anda perlu menambahkan --waittanda, dan --new-windowtanda juga sangat dianjurkan, sehingga komit / diff / apa pun tidak hanya muncul sebagai tab baru di editor yang sudah terbuka, mengharuskan Anda untuk menutup file Anda mungkin masih bekerja untuk memberi tanda git bahwa Anda selesai mengedit.
Isochronous
1

GitPad menetapkan editor teks Anda saat ini sebagai editor default untuk Git.

Editor default saya untuk .txtfile di Windows 10 adalah Visual Studio Code dan menjalankan GitPad pernah menjadikannya editor default untuk Git. Saya belum mengalami masalah yang disebutkan dalam pertanyaan (Git menunggu sampai jendela VS Code ditutup dalam kasus saya).

(Tautan untuk .exefile tidak berfungsi untuk saya, Anda mungkin perlu mengkompilasi sumbernya sendiri.)

Şafak Gür
sumber
Apa yang Anda tunjukkan sebagai editor default? Saya telah mencoba menggunakan apa yang dijelaskan di sini: donovanbrown.com/post/2015/07/07/... Tapi itu sepertinya tidak mau bekerja. Jangan benar-benar ingin menunjuk pada exe tertentu, karena itu akan berubah ketika Kode diperbarui.
Gary Ewan Park
1
@Gary, saya tidak harus menunjuk file tertentu, Kode itu dalam daftar ketika saya melakukan Right click> Open with> Chose another app. Saya mengharapkannya untuk mendaftar sendiri pada pengaturan (dan memperbarui registri dengan setiap pembaruan sehingga shell dapat menemukannya) tetapi saya tidak dapat menemukan apa pun selain item menu konteks "Buka dengan Kode" dalam registri. Jadi saya benar-benar tidak punya jawaban yang lebih jelas untuk ini, maaf.
Şafak Gür
Hmm, itu aneh, saya tidak punya kode sebagai entri dalam daftar yang muncul ketika saya melakukannya.
Gary Ewan Park
1

Kabar baik! Pada saat penulisan, fitur ini telah diimplementasikan dalam rilis 0.10.12-orang dalam dan dilakukan melalui 0.10.14-orang dalam . Karenanya kita akan memilikinya dalam versi 1.0 Code VS yang akan datang .

Ref Implement: Implement -w / - tunggu baris perintah arg

Wasif Hossain
sumber
dapatkah Anda mengomentari bagaimana saya dapat menggunakan penampil diff dalam VSCode untuk melihat diff di git?
Gary Ewan Park
1

Hanya ingin menambahkan garis miring ini ke jawaban sebelumnya, saya menggunakan Windows 10 CMD, dan itu tidak berfungsi tanpa garis miring sebelum spasi.

git config --global core.editor "C:\\Users\\your_user_name\\AppData\\Local\\Programs\\Microsoft\ VS\ Code\\Code.exe"
Victor Ma
sumber
Saya dapat menambahkan dengan: git config --global core.editor "'C: \ Users \ cbre_admin \ AppData \ Local \ Programs \ Microsoft VS Code \ Code.exe' -w"
rjt011000
0

Saya tidak yakin Anda bisa melakukan ini, namun Anda dapat mencoba tambahan ini di file gitconfig Anda.

Cobalah untuk mengganti kdiff3 dari nilai-nilai ini untuk menunjuk ke kode visual studio yang dapat dieksekusi.

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

SJMan
sumber
Seperti yang saya sebutkan dalam pertanyaan saya, saya tidak berpikir penggabungan akan didukung, karena saya tidak berpikir Visual Studio Code tahu bagaimana melakukan ini, saya menduga itu hanya akan dapat melakukan diff dan melakukan olahpesan.
Gary Ewan Park
0

Saya mengatur Visual Studio Code sebagai default untuk membuka file .txt. Dan saya berikutnya lakukan perintah penggunaan sederhana: git config --global core.editor "'C:\Users\UserName\AppData\Local\Code\app-0.7.10\Code.exe\'". Dan semuanya bekerja dengan sangat baik.

Zidu
sumber
0

Jalankan perintah ini di aplikasi Terminal Mac Anda

git config --global core.editor "/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin/code"
Mohammed
sumber
2
Ini tidak berfungsi ketika Anda mendapatkan pesan kesalahan: Membatalkan komit karena pesan komit kosong. Bendera tunggu perlu ditambahkan. Misalnya - tunggu.
Belfield
0

pada windows 10 menggunakan edisi 64bit orang dalam, perintahnya adalah:

git config --global core.editor "'C: \ Program Files \ Microsoft VS Code Insiders \ bin \ code-insiders.cmd'"

Anda juga dapat mengganti nama 'code-insiders.cmd' menjadi 'code.cmd' di direktori 'Program Files', dengan cara ini Anda sekarang dapat menggunakan perintah 'code.' untuk mulai mengedit file di. direktori

LuisCarlos Rodriguez
sumber