Como posso configurar um editor para trabalhar com o Git no Windows?


561

Estou testando o Git no Windows . Cheguei ao ponto de tentar "git commit" e recebi este erro:

O terminal é burro, mas não está definido VISUAL nem EDITOR. Forneça a mensagem usando a opção -m ou -F.

Então eu descobri que precisava ter uma variável de ambiente chamada EDITOR. Sem problemas. Eu o defino para apontar para o Bloco de notas. Isso funcionou quase. A mensagem de confirmação padrão é aberta no bloco de notas. Mas o Bloco de notas não suporta feeds de linha simples. Saí e peguei o Notepad ++ , mas não consigo descobrir como configurar o Notepad ++ da %EDITOR%maneira que funcione com o Git conforme o esperado.

Eu não sou casado com o Notepad ++. Neste ponto, eu não me importo com o editor que eu uso. Eu só quero poder digitar mensagens de confirmação em um editor, e não na linha de comando (com -m).

Aqueles de vocês que usam o Git no Windows: Qual ferramenta você usa para editar suas mensagens de confirmação e o que você fez para fazê-lo funcionar?


7
TLDR: colocar aspas simples em torno do caminho para o executável do editor
yoyo

Provavelmente não é útil, mas FWIW, eu apenas uso o bloco de notas comum. Eu não fiz nada para fazê-lo funcionar. Ele só trabalhou fora da caixa por padrão ...
BrainSlugs83

11
Atualização em setembro de 2015: um simples git config core.editor notepadagora é suficiente. Veja minha resposta atualizada abaixo .
VonC 21/09/2015

Apenas uma observação rápida de que o JEdit não é um editor apropriado para o git. O JEdit abre apenas uma instância, mesmo para vários arquivos. Se já estava aberto, o git fará com que ele abra um novo arquivo, mas você precisará fechar completamente o JEdit antes que o git continue. Não há opção de linha de comando para fazer com que o JEdit abra uma instância separada para editar a mensagem de confirmação.
GrantRobertson

Caso alguém ame o Sublime Text 3, aqui estão minhas instruções de como eu o configurei para Windows ... e Linux também: Melhores configurações para o Sublime Text 3 como seu editor git (instruções para Windows e Linux) . @yoyo, TLDR para usar qualquer editor de texto: coloque aspas simples no caminho do executável do editor E use barras (/) NÃO barras invertidas (\) no nome do caminho do executável do Windows.
Gabriel Staples

Respostas:


562

Atualização em setembro de 2015 (6 anos depois)

A última versão do git-for-Windows (2.5.3) agora inclui:

Ao configurar git config core.editor notepad, os usuários agora podem usar notepad.execomo editor padrão .
A configuração git config format.commitMessageColumns 72será escolhida pelo wrapper do bloco de notas e alinhará a mensagem de confirmação após a edição do usuário.

Veja commit 69b301b de Johannes Schindelin ( dscho) .

E o Git 2.16 (primeiro trimestre de 2018) mostrará uma mensagem para informar ao usuário que está aguardando o término da edição ao gerar um editor, caso o editor seja aberto em uma janela oculta ou em algum lugar obscuro e o usuário se perca.

Consulte commit abfb04d (07 dez 2017) e commit a64f213 (29 nov 2017) por Lars Schneider ( larsxschneider) .
Ajudado por: Junio ​​C Hamano ( gitster) .
(Mesclado por Junio ​​C Hamano - gitster- na confirmação 0c69a13 , 19 de dezembro de 2017)

launch_editor(): indica que o Git aguarda a entrada do usuário

Quando uma gráfica GIT_EDITORé gerada por um comando Git que abre e aguarda a entrada do usuário (por exemplo, " git rebase -i"), a janela do editor pode ser obscurecida por outras janelas.
O usuário pode ficar olhando a janela do terminal original do Git sem perceber que precisa interagir com outra janela antes que o Git possa prosseguir. Para este usuário, o Git aparece suspenso.

Imprima uma mensagem informando que o Git está aguardando a entrada do editor no terminal original e se livre dela quando o editor retornar, se o terminal suportar apagar a última linha


Resposta original

Acabei de testar com a versão 1.6.2.msysgit.0.186.gf7512 do git e o Notepad ++ 5.3.1

Eu prefiro não ter que definir uma variável EDITOR, então tentei:

git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\""
# or
git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\" %*"

Isso sempre dá:

C:\prog\git>git config --global --edit
"c:\Program Files\Notepad++\notepad++.exe" %*: c:\Program Files\Notepad++\notepad++.exe: command not found
error: There was a problem with the editor '"c:\Program Files\Notepad++\notepad++.exe" %*'.

Se eu definir um npp.bat, incluindo:

"c:\Program Files\Notepad++\notepad++.exe" %*

e eu digito:

C:\prog\git>git config --global core.editor C:\prog\git\npp.bat

Apenas funciona a partir da sessão do DOS, mas não a partir do shell git .
(não que, com o mecanismo de configuração core.editor, um script com " start /WAIT..." não funcione, mas apenas abra uma nova janela do DOS)


A resposta de Bennett menciona a possibilidade de evitar a adição de um script, mas de referenciar diretamente o próprio programa entre aspas simples . Observe a direção das barras! Use /NÃO \para separar pastas no nome do caminho!

git config --global core.editor \
"'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Ou se você estiver em um sistema de 64 bits:

git config --global core.editor \
"'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Mas prefiro usar um script (veja abaixo): dessa forma, posso jogar com caminhos diferentes ou opções diferentes sem precisar me registrar novamente a git config.


A solução real (com um script) foi perceber que: o
que você se refere no arquivo de configuração é na verdade um /bin/shscript shell ( ) , não um script DOS.

Então, o que funciona é:

C:\prog\git>git config --global core.editor C:/prog/git/npp.bat

com C:/prog/git/npp.bat:

#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst "$*"

ou

#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$*"

Com essa configuração, eu posso fazer ' git config --global --edit' a partir do DOS ou Git Shell, ou eu posso fazer ' git rebase -i ...' a partir do DOS ou Git Shell.
Os comandos bot acionam uma nova instância do bloco de notas ++ (daí a -multiInstopção ') e aguardam o fechamento dessa instância antes de continuar.

Observe que eu uso apenas '/', não \ '. E instalei o msysgit usando a opção 2. (Adicione o git\bindiretório à PATHvariável de ambiente, mas sem substituir algumas ferramentas internas do Windows)

O fato de o wrapper do bloco de notas ++ ser chamado .bat não é importante.
Seria melhor chamá-lo de 'npp.sh' e colocá-lo no [git]\cmddiretório (ou em qualquer diretório referenciado pela sua variável de ambiente PATH).


Veja também:


lightfire228 acrescenta nos comentários :

Para quem tem um problema em que o N ++ apenas abre um arquivo em branco e o git não aceita sua mensagem de confirmação, consulte " Anulando a Confirmação Devido à Mensagem Vazia ": altere seu arquivo .batou .shpara dizer:

"<path-to-n++" .git/COMMIT_EDITMSG -<arguments>. 

Isso instruirá o bloco de notas ++ a abrir o arquivo de confirmação temporária, em vez de um novo em branco.


No seu script de shell, você precisa de aspas duplas em torno de $ *, caso contrário, não funcionará corretamente para caminhos com espaços neles. Obrigado pela explicação completa - estou instalando o git (e várias outras coisas) no Windows para programadores iniciantes, e a linha de comando é difícil o suficiente para grok sem fazê-los aprender os comandos vi.
266 Sarah Sarah Mei


1
Seguindo a resposta de Bennett, você não precisa criar um script, basta usar um apóstrofo 'dentro das aspas ".
Tobias Kienzler

@ Tobias: verdade, incluí a resposta dele na minha, bem como a razão pela qual ainda prefiro fazer referência a um script em minhas git configconfigurações.
VonC

6
@NateGlenn Use o dir /Xequivalente abreviado : " PROGRA~2" for " Program Files (x86)", que é um bom hábito de se usar ao usar ferramentas compatíveis com várias plataformas no Windows, o que permite compactar o espaço em branco.
JJ Zabkar

300

Com base na resposta de Darren , para usar o Notepad ++, você pode simplesmente fazer isso (tudo em uma linha):

git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Obviamente, a C:/Program Files/Notepad++/notepad++.exeparte deve ser o caminho para o executável do Notepad ++ no seu sistema. Por exemplo, pode ser C:/Program Files (x86)/Notepad++/notepad++.exe.

Funciona como um encanto para mim.


10
Eu também! BTW, aqueles interruptores são explicados em C: / Program Files / Notepad ++ / user.manual / documentation / notepad-manual-line.html comando /
Andrew Swan

23
Observe que o Notepad ++ está localizado em `C: \ Arquivos de Programas (x86)`
mindless.panda

8
Para Windows x64, mude para: git config --global core.editor "'C: / Arquivos de Programas (x86) / Notepad ++ / notepad ++. Exe' -multiInst -notabbar -nosession -noPlugin"
Dariusz

4
Sei que estou atrasado para esta festa, mas por curiosidade, alguém sabe (ou se lembra, depois de todos esses anos) por que alguém especificaria "-notabbar"? Eu entendo o raciocínio por trás dos outros parâmetros (bem, não sei por que "-noPlugin", na verdade), mas não esse.
Wilson F

11
@WilsonF O motivo é que você DEVE sair do bloco de notas ++ para que o git pare de aguardar sua entrada e continue. Você não deseja abrir outras guias nesta instância do Notepad ++ porque sua sessão do git parece estar congelada! Essas configurações fazem exatamente a coisa certa: se você já possui o Notepad ++ aberto, obtém uma nova instância, que não permite abrir outros arquivos e que você deve fechar quando terminar para que o git saiba que você terminou de editar . Funciona da mesma forma para as mensagens de confirmação.
21715 ErikE

50

De qualquer forma, acabei de brincar com isso e achei o seguinte a funcionar bem para mim:

git config --global core.editor "'C:/Program Files/TextPad 5/TextPad.exe' -m"

Eu não acho que o CMD gosta de aspas simples, então você deve usar aspas duplas "para especificar o argumento da string incorporada no espaço".

Cygwin (que acredito ser a plataforma subjacente do Bit do Git), por outro lado, gosta de ambos 'e "; você pode especificar caminhos do tipo CMD, usando em /vez de \, desde que a string seja citada, ou seja, neste caso, usando aspas simples.

A -msubstituição / indica o uso de vários editores e não há necessidade de uma %*tachinha no final.


Obrigado pela explicação de aspas simples / duplas, faz sentido agora!
Patrick McDonald

3
git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -m"funciona como um encanto para mim.
Vlad Holubiev

Eu usei o `git config --global code.editor" 'C: \ Arquivos de Programas \\ Sublime Text 3 \\ sublime_text.exe' -n -w -m "`, no entanto, quando executo o "git commit", ele se abre um editor de bloco de notas. Alguma idéia de por que esse seria o caso? Desde já, obrigado.
Ryan Chase

@RyanChase Remova a entrada de configuração local de ./git/config, por exemploeditor = notepad
Ricky Boyce

1
O Git Bash é executado no MingW64, não no Cygwin. Cygwin tem seu próprio binário Git.
Hans Deragon 14/04

27

Edit: Depois de atualizar para o Vim 7.3, cheguei à conclusão de que a maneira mais limpa e fácil de fazer isso é:

  1. Adicione a pasta principal do Vim ao seu caminho (clique com o botão direito do mouse em Meu computadorPropriedadesAvançadoVariáveis ​​de ambiente )

  2. Rode isto:

    git config --global core.editor "gvim --nofork '%*'"
    

Se você fizer dessa maneira, tenho certeza de que também funcionará com o Cygwin.

Resposta original:

Mesmo com algumas respostas relacionadas ao Vim, eu estava tendo problemas para que isso funcionasse com o gVim no Windows (sem usar um arquivo em lotes ou% EDITOR% ou Cygwin).

O que finalmente cheguei é agradável e limpo e parte de algumas das soluções aqui:

git config --global core.editor \
"'C:/Program Files/Vim/vim72/gvim.exe' --nofork '%*'"

Um problema que me levou um tempo é que essas não são as barras invertidas no estilo do Windows. Eles são barras dianteiras normais.


1
Se o vim estiver instalado Program Files(x86), você precisará alterar o caminho obviamente.
Swapnil

15

O Notepad ++ funciona muito bem, embora eu opte por usar o Notepad, -m, ou mesmo algumas vezes a "edição" incorporada.

O problema que você está enfrentando usando o Notepad ++ está relacionado a como o Git está iniciando o executável do editor. Minha solução para isso é definir a variável de ambiente EDITORpara um arquivo em lotes, em vez do executável real do editor, que faz o seguinte:

start /WAIT "E:\PortableApps\Notepad++Portable\Notepad++Portable.exe" %*

/WAITsolicita que a sessão da linha de comando seja interrompida até que o aplicativo termine; assim, você poderá editar o conteúdo do seu coração enquanto o Git espera por você. % * passa todos os argumentos para o arquivo em lotes através do Notepad ++.

C:\src> echo %EDITOR%
C:\tools\runeditor.bat

Eu tive problemas para fazer isso funcionar com o PowerShell. Esse método ( stackoverflow.com/questions/10564/… ) funcionou bem.
6119 Peter Stephens

11

WordPad !

Fico feliz em usar o Vim, mas como estou tentando apresentar o Git à empresa, queria algo que todos tivéssemos e descobri que o WordPad parece funcionar bem (por exemplo, o Git espera até que você termine de editar e fechar a janela).

git config core.editor '"C:\Program Files\Windows NT\Accessories\wordpad.exe"'

Isso está usando o Git Bash no msysgit; Eu não tentei no prompt de comando do Windows (se isso faz alguma diferença).


Gostei da simplicidade disso, mas não funcionou para mim imediatamente. Aqui está o que eu tentei. Eu recebo a seguinte mensagem de erro: Erro: Houve um problema com o editor 'C: \ Arquivos de Programas \ Windows NT \ Accessories \ wordpad.exe'.
Shaun Luttin

3
As aspas estão incorretas. Você deve colocar aspas duplas fora das aspas simples . Ou seja, use "'C: \ Arquivos de programas \ Windows NT \ Accessories \ wordpad.exe'" e, em seguida, ele funcionará.
Shaun Luttin

Você também pode se beneficiar de barras (/) em vez de barras invertidas (\).
Chris Jones

1
Além disso, provavelmente é melhor usar "git config --global" em vez de apenas "git config" para isso. Você provavelmente deseja que a configuração se aplique a todos os repositórios git na sua estação de trabalho, não apenas àquela em que está agora.
Chris Jones

@ ChrisJones, não há sentido neste caso porque "arquivos de programa" têm um espaço entre eles.
Pacerier

9

Eu também uso o Cygwin no Windows, mas com o gVim (em oposição ao Vim baseado em terminal ).

Para fazer isso funcionar, eu fiz o seguinte:

  1. Criou um arquivo em lotes de uma linha (nomeado git_editor.bat) que contém o seguinte: "C:/Program Files/Vim/vim72/gvim.exe" --nofork "%*"
  2. Colocado git_editor.batno meu PATH.
  3. Conjunto GIT_EDITOR=git_editor.bat

Com isso feito git commit,, etc. invocará corretamente o executável gVim.

NOTA 1: A --noforkopção para gVim garante que ele bloqueie até que a mensagem de confirmação seja gravada.

NOTA 2: As aspas ao redor do caminho para o gVim são necessárias se você tiver espaços no caminho.

NOTA 3: As aspas em torno de "% *" são necessárias caso o Git passe um caminho de arquivo com espaços.


Para as pessoas que estão usando o msysgit (não o git do cygwin), consegui simplificar um pouco. stackoverflow.com/questions/10564/…
Nick Knowlson

Em segundo pensei que poderia trabalhar com cygwin, bem, eu não estou totalmente certo
Nick Knowlson

8

Graças à comunidade Stack Overflow ... e um pouco de pesquisa, consegui que meu editor favorito, o EditPad Pro , funcionasse como editor principal com o msysgit 1.7.5.GIT e o TortoiseGit v1.7.3.0 no Windows XP SP3. ..

Seguindo o conselho acima, adicionei o caminho a um script Bash para o editor de código ...

git config --global core.editor c:/msysgit/cmd/epp.sh

No entanto, após várias tentativas fracassadas das soluções mencionadas acima, finalmente consegui fazer isso funcionar. Pela documentação do EditPad Pro, adicionar o sinalizador '/ newinstance' permitiria ao shell aguardar a entrada do editor ...

A bandeira ' / newinstance ' foi a chave no meu caso ...

#!/bin/sh
"C:/Program Files/JGsoft/EditPadPro6/EditPadPro.exe" //newinstance "$*"

Sim, essa barra dupla para o parâmetro newinstance deve estar nos documentos do Editpad. Obrigado por anotá-lo aqui!
gwideman

O EditPad Pro requer opções de linha de comando /newinstanceque tenham exatamente uma barra. Isso é bastante normal para aplicativos do Windows. Se você estiver invocando o EditPad a partir de um shell UNIX, precisará usar qualquer mecanismo que seu shell ofereça para escapar da barra para que ele não veja a opção como um caminho absoluto e passe uma única barra literal para a linha de comando do EditPad.
Jan Goyvaerts

2
Se você possui o EditPad Pro 7 e deseja chamar o EditPad Pro a partir de um processo que deseja aguardar o processo do EditPad, deve passar a /waitchave na linha de comando do EditPad. Você pode usar /waitcom ou sem /newinstancepara controlar se uma nova janela do EditPad deve ser aberta ou se uma janela existente deve ser reutilizada. O processo iniciado pelo seu script aguardará o fechamento do arquivo, independentemente de uma janela ter sido criada ou reutilizada. O EditPad Pro 6 e anterior não são compatíveis /wait.
Jan Goyvaerts

@JanGoyvaerts ~ Obrigado pelo /waitsenhor ponta bandeira ... :)
Eddie B

Não consegui que o EditPad Lite funcionasse para mim usando as instruções acima. Talvez tenha sido porque eu estava tentando invocar o EditPad (através do Git) usando o terminal do Windows em vez do Git Bash ou algum outro shell UNIX. O que funcionou para mim foi editar diretamente a [core]seção .gitconfig para incluir a linha editor = "'C:/Program Files/Just Great Software/EditPad Lite 7/EditPadLite7.exe' //wait //newinstance".
user697473

8

Para Atom você pode fazer

git config --global core.editor "atom --wait"

e semelhante para o Visual Studio Code

git config --global core.editor "code --wait"

que abrirá uma janela de código Atom ou Visual Studio para você confirmar,

ou para texto sublime :

git config --global core.editor "subl -n -w"

Muito mais simples e eficaz. Obrigado.
Rom5jp

6

Edite o arquivo .gitconfig na pasta c: \ Users \ YourUser e adicione:

[core]
editor = 'C:\\Program files\\path\\to\\editor.exe'

6

Este é o sintoma de maiores problemas. Notavelmente, você tem algo definido TERM=dumb. Outras coisas que não funcionam corretamente são asless comando que diz que você não tem um terminal totalmente funcional.

Parece que isso é mais comumente causado pelo fato de o TERM ter definido como algo nas variáveis ​​de ambiente globais do Windows. Para mim, o problema surgiu quando instalei o Strawberry Perl. Algumas informações sobre isso estão no bug do msysgit para esse problema. , além de várias soluções.

A primeira solução é corrigi-lo no seu ~ / .bashrc adicionando:

export TERM=msys

Você pode fazer isso no prompt do Git Bash da seguinte maneira:

echo "export TERM=msys" >> ~/.bashrc

A outra solução, que finalmente foi o que eu fiz, porque não me importo com os motivos do Strawberry Perl para adicionar TERM=dumbàs minhas configurações de ambiente, é remover o TERM=dumbconforme indicado neste comentário no relatório de bug do msysgit .

Painel de controle / Sistema / Avançado / Variáveis ​​de ambiente ... (ou semelhante, dependendo da sua versão do Windows) é onde variáveis ​​de ambiente fixas são definidas no Windows. Por padrão, TERM não está definido. Se TERM estiver definido lá, então você (ou um dos programas que você instalou - por exemplo, Strawberry Perl) o definiu. Exclua essa configuração e você ficará bem.

Da mesma forma, se você usa o Strawberry Perl e se preocupa com o cliente CPAN ou algo parecido, pode deixar em TERM=dumbpaz e usar unset TERMno seu arquivo ~ / .bashrc, que terá um efeito semelhante ao definir um termo explícito como acima.

Obviamente, todas as outras soluções estão corretas, pois você pode usar git config --global core.editor $MYFAVORITEEDITORpara garantir que o Git use seu editor favorito quando precisar iniciar um para você.


thx tanto! Eu tive esse problema por causa do perl de morango e isso estava me deixando louco! thx por apontar isso
Dmitry Avtonomov 9/13


4

Eu tinha o PortableGit 1.6 funcionando bem, mas depois de atualizar para a versão do Windows PortableGit 1.7, tive problemas. Alguns dos comandos do Git abrem o Notepad ++. Exe, mas outros não, especialmente o Git rebase se comporta de maneira diferente.

O problema é que alguns comandos executam o processo cmd do Windows e outros usam o processo cmd do Unix. Quero atribuir atributos de inicialização ao editor do Notepad ++, portanto, preciso ter um script personalizado. Minha solução é essa.

  1. Crie um script para executar um editor de texto apropriado. O script parece estranho, mas lida com as variações do Windows e do Unix.

    c: /PortableGit/cmd/git-editor.bat

    #!/bin/sh
    # Open a new instance
    
    function doUnix() {
      "c:\program files\notepad++\notepad++.exe" -multiInst -nosession -notabbar $*
      exit
    }
    
    doUnix $*
    
    :WINCALL
    "c:\program files\notepad++\notepad++.exe" -multiInst -nosession -notabbar %*
    
  2. Defina a variável global core.editor

    O script foi salvo na pasta git / cmd, portanto já está no caminho do gitconsole. Isso é obrigatório, pois um caminho completo pode não funcionar corretamente.

    git config --global core.editor "git-editor.bat"
    

Agora eu posso executar os comandos git commit -a e git rebase -i master . Experimente se você tiver problemas na ferramenta Git Windows.


4

Eu uso o Git em várias plataformas e gosto de usar as mesmas configurações do Git em todas elas. (Na verdade, eu tenho todos os meus arquivos de configuração sob controle de liberação com o Git e coloco um clone do repositório Git em cada máquina.) A solução que surgiu foi a seguinte:

Eu coloquei meu Defino editor como giteditor

git config --global core.editor giteditor

Então eu criar um link simbólico chamado giteditor que está no meu PATH . (Eu tenho um diretório bin pessoal , mas em qualquer lugar do PATH funciona.) Esse link aponta para o meu atual editor de escolha. Em máquinas diferentes e plataformas diferentes, eu uso editores diferentes, então isso significa que não preciso alterar minha configuração universal do Git ( .gitconfig ), apenas o link para o qual o giteditor aponta.

Links simbólicos são tratados por todos os sistemas operacionais que eu conheço, embora possam usar comandos diferentes. Para Linux, você usa ln -s . Para o Windows, você usar o cmd built-in mklink . Eles têm sintaxes diferentes (que você deve procurar), mas tudo funciona da mesma maneira, na verdade.


Na verdade, eu tentei isso no Windows7 e não funciona no msys git. Ele dizerror: cannot spawn giteditor: No such file or directory
DanielSank

4

Com base na sugestão de VonC , isso funcionou para mim (estava me deixando louco):

git config --global core.editor "'C:/Program Files (x86)/Sublime Text 3/subl.exe' -wait"

A omissão -waitpode causar problemas, especialmente se você estiver trabalhando com o Gerrit e alterar os IDs que precisam ser copiados manualmente na parte inferior da sua mensagem de confirmação.


4

Eu precisava fazer ambos dos seguintes para obter Git para lançar Notepad ++ no Windows:

  • Adicione o seguinte ao .gitconfig:

    editor = 'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin
    
  • Modifique o atalho para iniciar o shell do Git Bash para executar como administrador e use-o para iniciar o shell do Git Bash. Eu estava supondo que a entrada do menu de contexto "Git Bash aqui" não estava iniciando o Notepad ++ com as permissões necessárias.

Depois de fazer as duas opções acima, funcionou.


3

Eu uso o Cygwin no Windows, então eu uso:

export EDITOR="emacs -nw"

O objetivo -nwé no-windows, ou seja, diga ao Emacs para não tentar usar o X Window .

As combinações de teclas do Emacs não funcionam para mim a partir de um shell do Windows, então eu usaria isso apenas a partir de um shell Cygwin ... ( recomenda-se o rxvt .)


3

Esta é minha configuração para usar o Geany como editor do Git:

git config --global core.editor C:/path/to/geany.bat

com o seguinte conteúdo em geany.bat:

#!/bin/sh
"C:\Program Files\Geany\bin\Geany.exe" --new-instance "$*"

Ele funciona no console do DOS e no msysgit.


2
VonC respondeu sobre o bloco de notas ++, minha resposta é para Geany?
CharlesB

2

Parece que o Git não encontrará o editor se houver espaços no caminho. Portanto, você precisará colocar o arquivo em lotes mencionado na resposta de Patrick em um caminho que não seja um espaço em branco.


3
Esse formato funciona bem para caminhos com espaços: git config --global core.editor "\" c: \ Arquivos de programas \ textpad 5 \ textpad.exe \ "" para que seja prático evitar a criação de um arquivo em lotes
Carl

2

Tive dificuldade em fazer o Git cooperar com o WordPad , o Komodo Edit e praticamente todos os outros editores que eu dou. É mais aberto para edição, mas o Git claramente não espera que o salvar / fechar ocorra.

Como muleta, eu acabei de fazer ie

git commit -m "Fixed the LoadAll method"

para manter as coisas em movimento. Isso tende a manter minhas mensagens de confirmação um pouco mais curtas do que deveriam, mas claramente há algum trabalho a ser feito na versão do Git para Windows.

O GitGUI também não é tão ruim assim. É preciso um pouco de orientação, mas depois disso, funciona bastante bem.


2

Eu prefiro usar o Emacs. Configurá-lo pode ser um pouco complicado.

  1. Baixe o Emacs e descompacte em algum lugar c:\emacs.
  2. Corra c:\emacs\bin\addpm.exe. Você precisa clicar com o botão direito e "Executar como administrador" se estiver usando o Windows Vista ou superior. Isso colocará os executáveis ​​no seu caminho.
  3. Adicione (server-start)em algum lugar do seu .emacsarquivo. Consulte as Perguntas frequentes do Windows Emacs para obter conselhos sobre onde colocar seu .emacsarquivo.
  4. git config --global core.editor emacsclientw

O Git agora abrirá arquivos dentro de um processo Emacs existente. Você precisará executar esse processo existente manualmente a partir de c:\emacs\bin\runemacs.exe.


1

Consegui fazer a versão do ambiente funcionar, definindo a variável EDITOR usando aspas e /:

EDITOR="c:/Program Files (x86)/Notepad++/notepad++.exe"

1

Acabei de ter o mesmo problema e encontrei uma solução diferente. eu estava conseguindo

error: There was a problem with the editor 'ec'

Eu tenho VISUAL=ec, e um arquivo ec.batem lotes chamado no meu caminho que contém uma linha:

c:\emacs\emacs-23.1\bin\emacsclient.exe %*

Isso permite editar arquivos a partir da linha de comando ec <filename>e, com VISUALset, significa que a maioria dos programas unixy também os pega. O Git parece procurar o caminho de maneira diferente dos meus outros comandos - quando olhei para um git commitno Process Monitor , vi-o procurar em todas as pastas do caminho para ece para ec.exe, mas não para ec.bat. Eu adicionei outra variável de ambiente ( GIT_EDITOR=ec.bat) e tudo estava bem.


1

Estou usando o GitHub para Windows, que é uma boa opção visual. Mas também prefiro a linha de comando; portanto, para fazê-lo funcionar quando abro um repositório em um shell Git, basta definir o seguinte:

git config --global core.editor vim

o que funciona muito bem



1

Encontrei uma solução lindamente simples postada aqui - embora possa haver um erro no caminho em que você deve copiar o arquivo "subl" fornecido pelo autor.

Estou executando o Windows 7 x64 e tive que colocar o arquivo "subl" na minha /Git/cmd/pasta para fazê-lo funcionar.

Funciona como um encanto, no entanto.


1

Atom e Windows 10

  1. Clique com o botão direito do mouse no ícone Atom na área de trabalho e clique em Propriedades.
  2. Copiou o caminho do local "Iniciar em"
  3. Olhou para lá com o Windows Explorer e encontrou "atom.exe".
  4. Digitei isso no Git Bash:

    git config --global core.editor C:/Users/YOURNAMEUSER/AppData/Local/atom/app-1.7.4/atom.exe"
    

Nota: eu mudei tudo \por /. Criei um .bashrc no meu diretório pessoal e usei /para definir o meu diretório pessoal e ele funcionou, então eu assumi/ que seria o caminho a seguir.


consulte este URL será útil para aumentar a sua qualidade de conteúdo para cima
Willie Cheng

@ willie Obrigado, eu formatei o texto e adicionei algumas tags. Espero que isso melhore um pouco.
Jonathan Ramos

0

Aqui está uma solução com Cygwin:

#!/bin/dash -e
if [ "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=
fi
Notepad2 ${k+"$k"}
  1. Se não houver caminho, não passe nenhum caminho

  2. Se o caminho estiver vazio, passe o caminho vazio

  3. Se o caminho não estiver vazio, converta para o formato Windows.

Então eu defino estas variáveis:

export EDITOR=notepad2.sh
export GIT_EDITOR='dash /usr/local/bin/notepad2.sh'
  1. EDITOR permite que o script funcione com o Git

  2. GIT_EDITOR permite que o script funcione com os comandos do Hub

Fonte


0

Isso está funcionando para mim usando o Cygwin e o TextPad 6 (EDIT: também funciona com o TextPad 5, desde que você faça a alteração óbvia no script) e, presumivelmente, o modelo também poderia ser usado por outros editores:

Arquivo ~/.gitconfig:

[core]
    editor = ~/script/textpad.sh

Arquivo ~/script/textpad.sh:

#!/bin/bash

APP_PATH=`cygpath "c:/program files (x86)/textpad 6/textpad.exe"`
FILE_PATH=`cygpath -w $1`

"$APP_PATH" -m "$FILE_PATH"

Essa linha única também funciona:

Arquivo ~/script/textpad.sh(opção 2):

"`cygpath "c:/program files (x86)/textpad 6/textpad.exe"`" -m "`cygpath -w $1`"

0

Isso funcionou para mim:

  1. Adicione o diretório que contém o executável do editor à sua variável PATH . (Por exemplo, "C: \ Arquivos de Programas \ Texto Sublime 3" )
  2. Reinicie o computador.
  3. Altere a variável global Git core.editor para o nome do executável do editor sem a extensão '.exe' (por exemplo, git config --global core.editor sublime_text)

É isso aí!

NOTA: O Texto Sublime 3 é o editor que usei para este exemplo.


Quando configurado dessa maneira, o Sublime Text 3 abre várias instâncias ou lida com o fato de o git precisar fechar para sinalizar o final da edição?
James World

1
Eu acho que abrirá uma nova janela. Você pode adicionar a opção --wait ( sublimetext.com/forum/viewtopic.php?f=3&t=3257 )
nikoskip
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.