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.

Gary Ewan Park
fonte

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
rexcfnghk
fonte
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.

Frank Boucher
fonte
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.

IluxaKuk
fonte
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.

Ruslan Stelmachenko
fonte
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.

miqh
fonte
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.)

Şafak Gür
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

Wasif Hossain
fonte
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"
Victor Ma
fonte
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

SJMan
fonte
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.

Zidu
fonte
0

Execute este comando no seu aplicativo Mac Terminal

git config --global core.editor "/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin/code"
Mohammed
fonte
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

LuisCarlos Rodriguez
fonte