Como usar o código do Visual Studio como editor padrão para o Git


365

Ao usar o git na linha de comando, pergunto-me se é possível usar o Visual Studio Code como editor padrão, ou seja, ao criar comentários de confirmação e ao olhar para um diff de um arquivo na linha de comando.

Entendo que não será possível usá-lo para fazer mesclagens (pelo menos no minuto), mas alguém sabe se é possível usá-lo para analisar diffs e, se sim, quais opções de linha de comando seriam necessárias em o arquivo .gitconfig para fazer isso acontecer?

ATUALIZAÇÃO 1:

Eu tentei uma abordagem semelhante ao que fiz no Notepad ++ no passado , ou seja,

#!/bin/sh

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

E usado:

#!/bin/sh

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

Mas isso resulta em uma mensagem de erro:

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

O código é aberto corretamente, com o conteúdo esperado, mas não está aguardando a resposta, ou seja, clicar em salvar e fechar a janela para retornar ao prompt.

ATUALIZAÇÃO 2:

Acabei de receber uma resposta de um dos desenvolvedores que trabalha no VSCode. Parece que atualmente esta funcionalidade não é suportada :-(

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

Se você estiver interessado em ver esse recurso ser adicionado, convém adicionar seus votos aqui:

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

ATUALIZAÇÃO 3:

Fui informado com segurança que esse recurso foi escolhido pela equipe do VSCode, por isso estou ansioso por um lançamento futuro que o inclua.

ATUALIZAÇÃO 4:

Graças ao comentário do @ f-boucheros abaixo, eu consegui fazer o VS Code funcionar como editor padrão para comentários, rebase, etc. Eu ainda gostaria de ver se é possível usá-lo também como a ferramenta diff.

ATUALIZAÇÃO 5:

De acordo com a resposta aceita para a pergunta, agora é possível usar a versão V1.0 do código.

Respostas:


674

Na versão mais recente (v1.0, lançada em março de 2016 ), agora você pode usar o VS Code como a ferramenta padrão commit / diff do git . Citado nas documentações:

  1. Certifique-se de poder executar a code --helppartir da linha de comando e obter ajuda.

    • Se você não encontrar ajuda, siga estas etapas:

      • Mac: selecione Shell Command: instale o comando 'Code' no caminho na Paleta de comandos.

        • A paleta de comandos é o que aparece quando você pressiona shift+ ⌘+ Penquanto está dentro do VS Code. ( shift+ ctrl+ Pno Windows)
      • Windows: Verifique se você selecionou Adicionar ao PATH durante a instalação.
      • Linux: verifique se você instalou o Code através de nossos novos pacotes .deb ou .rpm.
  2. Na linha de comandos, execute git config --global core.editor "code --wait"

Agora você pode executar git config --global -ee usar o VS Code como editor para configurar o Git. insira a descrição da imagem aqui Adicione o seguinte para ativar o suporte ao uso do VS Code como ferramenta diff:

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

Isso aproveita a nova --diffopção que você pode passar para o VS Code para comparar dois arquivos lado a lado.

Para resumir, aqui estão alguns exemplos de onde você pode usar o Git com o VS Code:

  • git rebase HEAD~3 -i permite rebase interativo usando o VS Code
  • git commit permite usar o código VS para a mensagem de confirmação
  • git add -pseguido por epara adicionar interativo
  • git difftool <commit>^ <commit> permite usar o VS Code como editor diff para alterações

84
Eu também achei que adicionar --new-windowao comando é útil. Dessa forma, a operação git será aberta em uma nova janela.
— Jrotello 19/04

2
Quando falamos de linha de comando, queremos dizer Ctrl+Shift+P? O meu não está funcionando (não está code --helpdisponível) e não entendo o que significa: "Verifique se você selecionou Adicionar ao PATH durante a instalação" O que devo fazer para verificar isso? Alguém por favor pode me ajudar?
— Paolo Falomo 31/08/16

2
Observe que na v1.1 você precisa desativar a "saída quente" ou lembre-se de salvar explicitamente o arquivo antes de sair do vscode, caso contrário, o git não verá nenhuma alteração. Se você prefere ser lembrado para salvar a saída, você pode desativar esse recurso editando suas configurações de usuário: Inserir "files.hotExit": "off"na parte inferior da sua configuração
— Jack Ukleja

6
Eu tive que usar git config core.editor "code -n --wait"com o VS Code 1.17.2, executando a partir da linha de comando externa. Ambos codee code --waitme deram a "Anulação da confirmação devido à mensagem de confirmação vazia".
— Robert Calhoun

3
Agora, a mesclagem está disponível, bem como: [mesclar] tool = vscode [mergetool "vscode"] cmd = code --wait $ MERGED
— Sting

31

Pelo que entendi, o VSCode não está mais no AppData.

Portanto, defina o editor git padrão executando esse comando em uma janela de prompt de comandos:

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

O parâmetro -w, --waité esperar para a janela ser fechada antes de retornar. O Código do Visual Studio é baseado no Atom Editor. se também tiver átomo instalado executar o comando atom --help. Você verá que o último argumento na ajuda é esperar.

Da próxima vez que você fizer git rebase -i HEAD~3isso, o Visual Studio Code será exibido. Quando o VSCode estiver fechado, o Git retomará a liderança.

Nota: Minha versão atual do VSCode é 0.9.2

Espero que ajude.


Obrigado! Qual é o significado -we onde você achou isso documentado?
— Gary Ewan Park

11
Bom ponto. Está vindo do Atom -w é para espera. Eu editei minha resposta.
— Frank Boucher

Eu configurei isso e fico feliz em dizer que está funcionando. Se eu conseguisse que isso funcionasse agora como o Visual Studio Code, fazendo a diferença dos arquivos também, isso seria ótimo! :-)
— Gary Ewan Park

10
agora isso parece não funcionar mais com a atualização mais recente do VS Code. Você tem alguma ideia? Obrigado!
— Gary Ewan Parque

2
@ GaryEwanPark: Você precisa iniciar o code.cmd (ou o código no * nix) no subdiretório bin , para que as opções da linha de comando funcionem. Idealmente, você deve adicionar o subdiretório bin à sua variável de ambiente% PATH% (o instalador também faz isso por você) e configurar o editor em execução git config --global core.editor "code --wait".
— 11nspectable

13

Você precisa usar o comando:

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

Certifique-se de iniciar seu editor no Git Bash

Se você quiser usar o Code.exe com caminho curto, poderá fazer isso adicionando a seguinte linha ao seu .bash_profile:

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

E agora, você pode chamá-lo usando apenas o vscodecomando (ou o que você nomeou)

Algumas informações adicionais:

A instalação adicionará o código do Visual Studio ao seu% PATH%; portanto, no console, você pode digitar 'code' para abrir o VS Code nessa pasta. Você precisará reiniciar o console após a instalação para que a alteração na variável de ambiente% PATH% entre em vigor.


11
-né a abreviação de --new-windowfazer o git abrir uma nova janela do editor e -wé a abreviação de --waitfazer o git esperar que você feche a janela novamente. Esta é a única resposta que funciona para mim, porque se eu já tiver o VS Code aberto --wait, não funcionarei sem --new-window.
— Jan Aagaard

11

Outra opção útil é definir EDITORvariável de ambiente. Essa variável de ambiente é usada por muitos utilitários para saber qual editor usar. O Git também o usa se não core.editorestiver definido.

Você pode configurá-lo para a sessão atual usando:

export EDITOR="code --wait"

Dessa forma, não apenas git, mas muitos outros aplicativos usarão o VS Code como um editor.

Para tornar essa alteração permanente, adicione-a ao seu, ~/.profilepor exemplo. Veja esta pergunta para mais opções.


Outra vantagem dessa abordagem é que você pode definir editores diferentes para diferentes casos:

  1. Quando você trabalha no terminal local.
  2. Quando você está conectado através da sessão SSH.

Isso é útil especialmente com o VS Code (ou qualquer outro editor de GUI) porque simplesmente não funciona sem a GUI.

No sistema operacional Linux, coloque isso em seu ~/.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

Dessa forma, quando você usa um terminal local, a $SSH_CONNECTIONvariável de ambiente fica vazia, então o code -weditor será usado, mas quando você estiver conectado através do SSH, $SSH_CONNECTIONa variável de ambiente será uma string não vazia, portanto o vimeditor será usado. É um editor de console, portanto funcionará mesmo quando você estiver conectado através do SSH.


2

Abri o meu .gitconfige alterei-o com:

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

Isso foi feito por mim (estou no Windows 8).

No entanto, notei que, depois de tentar arbitrariamente, git commitno meu console do Git Bash , vejo a seguinte mensagem:

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

Sem saber quais podem ser as ramificações disso.


Eu também tentei isso, no entanto, estava recebendo "fatal: linha de arquivo de configuração ruim 14 em C: \ Users \ gep13 / .gitconfig" e notei que tinha barras invertidas, onde você tem barras invertidas. Alterar essas etapas fez com que funcionasse, mas como você, estou vendo a saída "Processo do renderizador iniciado", que na verdade gera duas vezes para mim e mostra: "[11956: 0504/091108: ERRO: ipc_channel_win.cc (136)] pipe error: 109 ", mas o commit realmente parece ter funcionado.
— Gary Ewan Park

Ah, interessante. Parece que minha sugestão só funciona se você tiver o Código completamente fechado (não muito conveniente!) Antes de fazer o commit. Encontro o mesmo erro que você relatou na sua atualização se o Código estiver aberto.
— miqh

interessante mesmo. Eu acho que é aí que o sinalizador -multiInst para o Notepad ++ entra em ação. Gostaria de saber se existe algo semelhante para o VSCode.
— Gary Ewan Park

Apenas para sua informação, app-0.1.0/resources/app/env.jsparece conter alguns sinalizadores de linha de comando que o executável do código usa. Ninguém sugere um comportamento equivalente ao do -multiInstpensamento.
— miqh

você precisa adicionar o --waitsinalizador, e o --new-windowsinalizador também é altamente recomendado, para que o commit msg / diff / o que seja não apareça como uma nova guia em um editor já aberto, exigindo que você feche os arquivos. trabalhando para sinalizar ao git que você terminou de editar.
— Isócrono

1

O GitPad define seu editor de texto atual como o editor padrão do Git.

Meu editor padrão para .txtarquivos no Windows 10 é o Visual Studio Code, e a execução do GitPad o tornou o editor padrão do Git. Não tive os problemas mencionados na pergunta (o Git aguarda até que a janela do VS Code seja fechada no meu caso).

(O link para o .exearquivo não funcionou para mim, pode ser necessário compilar a fonte.)


O que você apontou como editor padrão? Eu tentei usar o que está descrito aqui: donovanbrown.com/post/2015/07/07/… Mas isso parece não querer funcionar. Realmente não quero apontar para um exe específico, pois isso mudará à medida que o Código for atualizado.
— Gary Ewan Park

11
@Gary, eu não tenho que apontar um arquivo específico, o código era na lista quando eu fiz Right click> Open with> Chose another app. Eu esperaria que ele se registrasse na instalação (e atualizasse o registro a cada atualização para que o shell possa encontrá-lo), mas não encontrei nada além do item de menu de contexto "Abrir com código" no registro. Então, eu realmente não tenho uma resposta mais clara para isso, desculpe.
— akafak Gür

Hmm, isso é estranho, não tenho código como uma entrada na lista que aparece quando faço isso.
— Gary Ewan Park

1

Boas notícias! No momento da redação deste artigo, esse recurso já havia sido implementado na versão 0.10.12-insiders e realizado através da 0.10.14-insiders . Portanto, teremos isso na próxima versão 1.0 do VS Code .

Implementação Ref: Implement -w / - wait command line arg


você pode comentar sobre como eu seria capaz de usar o visualizador de diferenças no VSCode para visualizar as diferenças no git?
— Gary Ewan Parque

1

Só quero adicionar essas barras invertidas às respostas anteriores, estou no Windows 10 CMD e não funciona sem as barras invertidas antes dos espaços.

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

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

0

Não tenho certeza se você pode fazer isso, no entanto, você pode tentar essas adições no seu arquivo gitconfig.

Tente substituir o kdiff3 desses valores para apontar para o código do visual studio executável.

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


Como mencionei na minha pergunta, não acho que a mesclagem será suportada, pois não acho que o Visual Studio Code saiba como fazer isso, suspeito que só será capaz de fazer diff e enviar mensagens.
— Gary Ewan Park

0

Configurei o Visual Studio Code como padrão para abrir o arquivo .txt. E no próximo eu fiz comando simples uso: git config --global core.editor "'C:\Users\UserName\AppData\Local\Code\app-0.7.10\Code.exe\'". E tudo funciona muito bem.


0

Execute este comando no seu aplicativo Mac Terminal

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

2
Isso não funciona bem quando você recebe a mensagem de erro: Anulando a confirmação devido à mensagem de confirmação vazia. Um sinalizador de espera precisará ser adicionado. Por exemplo - aguarde.
— Belfield

0

no windows 10 usando a edição de 64 bits, o comando deve ser:

git config --global core.editor "'C: \ Arquivos de Programas \ Microsoft Insiders do Código VS \ bin \ code-insiders.cmd'"

você também pode renomear o 'code-insiders.cmd' para 'code.cmd' no diretório 'Arquivos de Programas'. Dessa forma, agora você pode usar o comando 'código'. para começar a editar os arquivos no. diretório

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.