Come utilizzare Visual Studio Code come editor predefinito per Git


365

Quando utilizzo git dalla riga di comando, mi chiedo se è possibile utilizzare Visual Studio Code come editor predefinito, ovvero quando si creano commenti di commit e si osserva un file diff dalla riga di comando.

Capisco che non sarà possibile usarlo per fare fusioni (almeno al minuto) ma qualcuno sa se è possibile usarlo per guardare le differenze, e in tal caso, quali opzioni della riga di comando sarebbero richieste in il file .gitconfig per farlo accadere?

AGGIORNAMENTO 1:

Ho provato un approccio simile a quello che ho fatto per Notepad ++ in passato , vale a dire

#!/bin/sh

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

E usato:

#!/bin/sh

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

Ma questo si traduce in un messaggio di errore:

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

Il codice si apre correttamente, con il contenuto previsto, ma non è in attesa della risposta, vale a dire fare clic su Salva e chiudere la finestra per tornare al prompt.

AGGIORNAMENTO 2:

Ho appena ricevuto una risposta da uno degli sviluppatori che lavorano su VSCode. Sembra che questa funzionalità al momento non sia supportata :-(

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

Se sei interessato a vedere questa funzione essere aggiunta, potresti pensare di aggiungere i tuoi voti qui:

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

AGGIORNAMENTO 3:

Sono stato informato in modo affidabile che questa funzione è stata scelta dal team di VSCode, quindi non vedo l'ora di rilasciare una versione futura che la includerà.

AGGIORNAMENTO 4:

Grazie al commento @ f-boucheros di seguito, sono stato in grado di far funzionare VS Code come editor predefinito per i commenti di commit, rebase, ecc. Vorrei ancora vedere se è possibile usarlo anche come strumento diff.

AGGIORNAMENTO 5:

Secondo la risposta accettata per la domanda, questo è ora possibile utilizzando la versione di codice V1.0.

Risposte:


674

Nella versione più recente (v1.0, rilasciata a marzo 2016 ), ora è possibile utilizzare VS Code come strumento git commit / diff predefinito . Citato dalle documentazioni:

  1. Assicurati di poter eseguire code --helpdalla riga di comando e ottenere assistenza.

    • se non vedi aiuto, segui questi passaggi:

      • Mac: selezionare il comando Shell: installare il comando 'Codice' nel percorso dalla tavolozza comandi.

        • La palette dei comandi è ciò che viene visualizzato quando si preme shift+ + Pmentre si è all'interno di VS Code. ( shift+ ctrl+ Pin Windows)
      • Windows: assicurati di aver selezionato Aggiungi a PERCORSO durante l'installazione.
      • Linux: assicurati di aver installato il codice tramite i nostri nuovi pacchetti .deb o .rpm.
  2. Dalla riga di comando, esegui git config --global core.editor "code --wait"

Ora puoi eseguire git config --global -ee utilizzare VS Code come editor per configurare Git. inserisci qui la descrizione dell'immagine Aggiungere quanto segue per abilitare il supporto per l'utilizzo di VS Code come strumento diff:

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

Questo sfrutta la nuova --diffopzione che puoi passare a VS Code per confrontare due file fianco a fianco.

Per riassumere, ecco alcuni esempi di dove puoi usare Git con VS Code:

  • git rebase HEAD~3 -i consente il rebase interattivo utilizzando VS Code
  • git commit consente di utilizzare il codice VS per il messaggio di commit
  • git add -pseguito da eper aggiungere interattivo
  • git difftool <commit>^ <commit> consente di utilizzare VS Code come editor diff per le modifiche

84
Ho anche trovato utile aggiungere --new-windowil comando. In questo modo l'operazione git si aprirà in una nuova finestra.
jrotello,

2
Quando parliamo di riga di comando intendiamo Ctrl+Shift+P? Il mio non funziona (non code --helpdisponibile) e non capisco cosa significhi: "Assicurati di aver selezionato Aggiungi a PERCORSO durante l'installazione" Cosa devo fare per controllarlo? Qualcuno può aiutarmi?
Paolo Falomo,

2
Nota dalla v1.1 è necessario disabilitare "hot exit" o ricordare di salvare esplicitamente il file prima di uscire da vscode, altrimenti git non vedrà alcun cambiamento. Se preferisci ricevere un promemoria per il salvataggio in uscita, puoi disattivare questa funzione modificando le impostazioni utente: Inserisci "files.hotExit": "off"nella parte inferiore della configurazione
Jack Ukleja

6
Ho dovuto usare git config core.editor "code -n --wait"con VS Code 1.17.2, correndo da riga di comando esterna. Entrambi codee code --waitmi sono procurato il "Interruzione del commit a causa del messaggio di commit vuoto".
Robert Calhoun,

3
E unione è ora disponibile e anche: [merge] tool = vscode [mergetool "vscode"] cmd = code --wait $ MERGED
Sting

31

Per quello che ho capito, VSCode non è più in AppData.

Quindi imposta l'editor git predefinito eseguendo quel comando in una finestra del prompt dei comandi:

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

Il parametro -w, --waitè quello di attendere la finestra per essere chiuso prima di tornare. Il codice di Visual Studio si basa su Atom Editor. se è installato anche atom, eseguire il comandoatom --help . Vedrai l'ultimo argomento nella guida è aspettare.

La prossima volta che lo fai a git rebase -i HEAD~3 , verrà visualizzato il codice di Visual Studio. Una volta chiuso VSCode, Git riprenderà il comando.

Nota: la mia versione attuale di VSCode è 0.9.2

Spero che aiuti.


Grazie! Qual è il significato di -we dove l'hai trovato documentato?
Gary Ewan Park,

1
Buon punto. Viene da Atom -w è per Wait. Ho modificato la mia risposta.
Frank Boucher,

Ho impostato questo, e sono felice di dire che funziona. Se potessi farlo funzionare ora come Visual Studio Code facendo anche il diffing dei file, sarebbe fantastico! :-)
Gary Ewan Park,

10
questo ora sembra non funzionare più con l'ultimo aggiornamento di VS Code. Hai qualche idea? Grazie!
Gary Ewan Park,

2
@GaryEwanPark: devi invece avviare code.cmd (o code su * nix) dalla sottodirectory bin , affinché le opzioni della riga di comando funzionino. Idealmente, aggiungere la sottodirectory bin alla variabile di ambiente% PATH% (anche il programma di installazione lo fa per te) e configurare l'editor in esecuzione git config --global core.editor "code --wait".
IInspectable

13

Devi usare il comando:

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

Assicurati di poter avviare il tuo editor da Git Bash

Se si desidera utilizzare Code.exe con un percorso breve, è possibile farlo aggiungendo la seguente riga al proprio .bash_profile:

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

E ora, puoi chiamarlo usando solo il vscodecomando (o come lo hai chiamato)

Alcune informazioni aggiuntive:

Il programma di installazione aggiungerà il codice di Visual Studio al tuo% PATH%, quindi dalla console puoi digitare 'code' per aprire VS Code su quella cartella. Sarà necessario riavviare la console dopo l'installazione per rendere effettive le modifiche alla variabile ambientale% PATH%.


1
-nè l'abbreviazione di --new-windowgit per aprire una nuova finestra dell'editor, ed -wè l'abbreviazione di --waitgit che ti aspetta per chiudere nuovamente la finestra. Questa è l'unica risposta che funziona per me, perché se ho già VS Code aperto --waitnon funzionerò senza --new-window.
Jan Aagaard,

11

Un'altra opzione utile è impostare EDITORla variabile di ambiente. Questa variabile di ambiente viene utilizzata da molte utility per sapere quale editor utilizzare. Git lo usa anche se nocore.editor è impostato.

Puoi impostarlo per la sessione corrente usando:

export EDITOR="code --wait"

In questo modo non solo git , ma molte altre applicazioni useranno VS Code come editor.

Per rendere permanente questa modifica, aggiungila ad ~/.profileesempio al tuo . Vedi questa domanda per ulteriori opzioni.


Un altro vantaggio di questo approccio è che puoi impostare diversi editor per diversi casi:

  1. Quando lavori dal terminale locale.
  2. Quando si è connessi tramite la sessione SSH.

Ciò è utile soprattutto con VS Code (o qualsiasi altro editor GUI) perché non funziona senza GUI.

Su SO Linux, inseriscilo nel tuo ~/.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

In questo modo quando si utilizza un terminale locale, la $SSH_CONNECTIONvariabile di ambiente sarà vuota, quindi code -wverrà utilizzato l' editor, ma quando si è connessi tramite SSH, $SSH_CONNECTIONla variabile di ambiente sarà una stringa non vuota, quindi vimverrà utilizzato l' editor. È l'editor di console, quindi funzionerà anche quando si è connessi tramite SSH.


2

Ho aperto il mio .gitconfige l' ho modificato con:

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

Lo ha fatto per me (sono su Windows 8).

Tuttavia, ho notato che dopo aver provato un arbitrario git commitche nella mia console Git Bash vedo il seguente messaggio:

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

Non sono sicuro di quali potrebbero essere le conseguenze di questo.


Avevo anche provato che, tuttavia, stavo ottenendo "fatal: file di configurazione errato linea 14 in C: \ Users \ gep13 / .gitconfig", poi ho notato che avevo barre rovesciate, in cui hai barre dirette. La modifica di questi round ha funzionato, ma come te sto vedendo l'output "Processo di rendering avviato", che in realtà emette due volte per me, quindi mostra: "[11956: 0504/091108: ERRORE: ipc_channel_win.cc (136)] pipe errore: 109 "ma il commit sembra aver funzionato.
Gary Ewan Park,

Ah, interessante. Sembra che il mio suggerimento funzioni solo se hai il codice completamente chiuso (non molto conveniente!) Prima di effettuare il commit. Riscontro lo stesso errore che hai segnalato nel tuo aggiornamento se il codice è aperto.
miq

davvero interessante. Immagino che sia qui che entrerebbe in gioco il flag -multiInst per Notepad ++. Mi chiedo se c'è qualcosa di simile per VSCode.
Gary Ewan Park,

Solo FYI, app-0.1.0/resources/app/env.jssembra contenere alcuni flag della riga di comando che esegue l'eseguibile del codice. Nessuno suggerisce un comportamento equivalente a quello di -multiInstperò.
miq

devi aggiungere il --waitflag e anche il --new-windowflag è altamente raccomandato, in modo che il commit msg / diff / qualunque cosa non appaia solo come una nuova scheda in un editor già aperto, richiedendo la chiusura di file che potresti essere ancora lavorando su per segnalare a git che hai finito di modificare.
Isochronous,

1

GitPad imposta il tuo attuale editor di testo come editor predefinito per Git.

Il mio editor predefinito per .txt file in Windows 10 è Visual Studio Code e l'esecuzione di GitPad l'ha reso l'editor predefinito per Git. Non ho riscontrato i problemi menzionati nella domanda (Git attende che nel mio caso venga chiusa la finestra VS Code).

(Il collegamento per il .exefile non ha funzionato per me, potrebbe essere necessario compilare la fonte da soli.)


Cosa hai indicato come editor predefinito? Ho provato a usare ciò che è descritto qui: donovanbrown.com/post/2015/07/07/… Ma sembra che non voglia funzionare. Non voglio davvero puntare a un exe specifico, poiché questo cambierà con l'aggiornamento del codice.
Gary Ewan Park,

1
@Gary, non ho avuto per puntare un file specifico, il codice è stato nella lista quando ho fatto Right click> Open with> Chose another app. Mi aspetterei che si registri al momento dell'installazione (e aggiorni il registro con ogni aggiornamento in modo che la shell riesca a trovarlo) ma non sono riuscito a trovare nient'altro che la voce del menu contestuale "Apri con codice" nel registro. Quindi non ho davvero una risposta più chiara per questo, scusa.
Şafak Gür

Hmm, è strano, non ho il codice come voce nell'elenco che appare quando lo faccio.
Gary Ewan Park,


1

Voglio solo aggiungere queste barre rovesciate alle risposte precedenti, sono su Windows 10 CMD e non funziona senza barre rovesciate prima degli spazi.

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

Sono stato in grado di aggiungere con: git config --global core.editor "'C: \ Users \ cbre_admin \ AppData \ Local \ Programmi \ Microsoft VS Code \ Code.exe' -w"
rjt011000

0

Non sono sicuro di poterlo fare, tuttavia puoi provare queste aggiunte nel tuo file gitconfig.

Prova a sostituire kdiff3 da questi valori per puntare all'eseguibile del codice di Visual Studio.

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


Come ho accennato alla mia domanda, non credo che la fusione sarà supportata, poiché non credo che Visual Studio Code sappia come farlo, sospetto che sarà in grado di fare solo diff e impegnare la messaggistica.
Gary Ewan Park,

0

Ho impostato Visual Studio Code come predefinito per aprire il file .txt. E dopo feci il comando semplice utilizzo: git config --global core.editor "'C:\Users\UserName\AppData\Local\Code\app-0.7.10\Code.exe\'". E tutto funziona abbastanza bene.


0

Esegui questo comando nell'app Terminal Mac

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

2
Ciò non funziona quando viene visualizzato il messaggio di errore: Interruzione del commit a causa di un messaggio di commit vuoto. Sarà necessario aggiungere un flag di attesa. Ad esempio - aspetta.
Belfield,

0

su Windows 10 usando l'edizione per interni a 64 bit il comando dovrebbe essere:

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

puoi anche rinominare 'code-insiders.cmd' in 'code.cmd' nella directory 'Programmi', in questo modo ora puoi usare il comando 'code'. per iniziare a modificare i file sul. elenco

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.