Como uso o Notepad ++ (ou outro) com o msysgit?

210

Como uso o Notepad ++ (ou qualquer outro editor além do vim) com o msysgit?

Tentei todas as seguintes opções sem sucesso:

git config --global core.editor C:\Program Files\Notepad++\notepad++.exe

git config --global core.editor "C:\Program Files\Notepad++\notepad++.exe"

git config --global core.editor C:/Program Files/Notepad++/notepad++.exe

git config --global core.editor C:\\Program Files\\Notepad++\\notepad++.exe
PHLAK
fonte
1
Alguma mensagem de erro? Você já tentou configurar a variável de ambiente EDITOR?
CSL
4
Tente olhar aqui: stackoverflow.com/questions/10564/…
JasonTrue
Apenas adicionamos algumas informações sobre o caminho do script, incluindo espaços, conforme solicitado.
VonC 01/11/2009

Respostas:

76

Atualização 2010-2011:

zumalifeguard 's solução (upvoted) é mais simples do que o original, uma vez que não mais precisa de um shell invólucro script.

Como explico em " Como posso configurar um editor para trabalhar com o Git no Windows? ", Prefiro um wrapper, pois é mais fácil tentar alternar entre editores ou alterar o caminho de um editor, sem precisar registrar a alteração. com um git confignovamente .
Mas isso sou só eu.


Informações adicionais : a solução a seguir funciona com Cygwin , enquanto a solução do zuamlifeguard não.


Resposta original.

Os seguintes:

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

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

funciona. Esses comandos são interpretados como shell script, daí a ideia de agrupar qualquer conjunto de comandos do Windows em um shscript.
(Como Franky comenta : "Lembre-se de salvar seu .sharquivo com finais de linhas no estilo Unix ou receber mensagens de erro misteriosas!")

Mais detalhes sobre a questão da SO Como posso configurar um editor para trabalhar com o Git no Windows?

Observe a -multiInstopção ' ', para garantir uma nova instância do notepad ++ para cada chamada do Git.

Observe também que, se você estiver usando Git no Cygwin (e quiser usar o Notepad ++ da Cygwin ), a scphantm explica em " usando o Notepad ++ para Git no Cygwin " que você deve estar ciente de que:

gitestá passando um cygwincaminho e nppnão sabe o que fazer com ele

Portanto, o script nesse caso seria:

#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$(cygpath -w "$*")"

Várias linhas para facilitar a leitura:

#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar \
  -nosession -noPlugin "$(cygpath -w "$*")"

Com "$(cygpath -w "$*")"sendo a parte importante aqui.

Val comentou (e depois excluiu) que você não deve usar a -notabbaropção:

Não é bom desativar a guia durante o rebase, mas prejudica bastante a usabilidade geral do Bloco de Notas, pois -notabse torna a configuração padrão e você deve Settings>Preferences>General>TabBar> Hide>unchecksempre que iniciar o bloco de notas após o rebase. Isso é o inferno. Você recomendou o inferno.

Então use:

#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -nosession -noPlugin "$(cygpath -w "$*")"

Isso é:

#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -nosession \
  -noPlugin "$(cygpath -w "$*")"

Se você deseja colocar o script ' npp.sh' em um caminho com espaços (como em ' c:\program files\...',), você tem três opções:

  • Tente citar o caminho (aspas simples ou duplas), como em:

    git config --global core.editor 'C:/program files/git/npp.sh'
  • ou tente a notação de nome abreviado (sem provas):

    git config --global core.editor C:/progra~1/git/npp.sh
  • ou local (meu favorito) ' npp.sh' em um diretório que faz parte da sua %PATH%variável de ambiente. Você não precisaria especificar nenhum caminho para o script.

    git config --global core.editor npp.sh
  • Steiny relata nos comentários que precisam fazer:

    git config --global core.editor '"C:/Program Files (x86)/Git/scripts/npp.sh"'
VonC
fonte
Eu consegui fazer isso colocando o npp.sh na raiz da minha unidade (ou seja, - C: /npp.sh). Sempre que tento direcionar uma pasta com espaços (por exemplo, - D: / Arquivos de Programas (x86) /Git/npp.sh), ela falha, qual é a maneira correta de escapar de espaços e / ou fazer com que isso funcione?
PHLAK 01/11/2009
colocar citações em torno dele. Vê como ele tem citações em torno da coisa toda em seu exemplo?
Fred
2
A resposta de zumalifeguard funcionou para mim. Não requer um wrapper de script de shell.
wbinford
1
@wbinford: adicionei um link para a resposta de zumalifeguard (que eu votei), bem como o motivo pelo qual prefiro registrar um wrapper, em vez do comando direto.
VonC
1
Eu tentei várias combinações dos itens acima e nenhum funciona com o git. eu tenho o meu script npp no ​​meu caminho e, no meu console cygwin, digito "npp {file}" o npp abre o arquivo muito bem, mas quando eu faço um "git rebase -i" o npp é aberto com um arquivo em branco em vez do mesclar arquivo. alguma idéia de por que isso iria acontecer?
scphantm
433
git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Ou, para Windows de 64 bits e uma instalação de 32 bits do Notepad ++:

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

Ou, o seguinte pode ser emitido na linha de comando no Windows de 32 ou 64 bits. Ele puxará o local do notepad ++. Exe do registro e configurará o git para usá-lo automaticamente:

FOR /F "usebackq tokens=2*" %A IN (`REG QUERY "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\notepad++.exe" /ve`) DO git config --global core.editor "'%B' -multiInst -notabbar -nosession -noPlugin"

Se você deseja colocar o texto acima em um arquivo .BAT ou .CMD, substitua% A por %% A e% B por %% B

zumalifeguard
fonte
9
também funciona em extensões git. Note-se que para 64 bits do Windows a entrada é"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin
Tim Abell
15
O mais bobo é que o -notabbar desabilitará a barra de guias permanentemente, não apenas nessa sessão. Ao iniciar o bloco de notas ++ normalmente, você deve ir para a caixa de diálogo de configurações e ativar a barra de guias novamente.
Oskar Berggren
4
Eu tive que usar: git config --global core.editor "c\:/Program\ Files\ \(x86\)/Notepad++/notepad++.exe -multiInst -nosession -noPlugin" ... não sei por que.
David Faivre
1
Eu tenho o Windows 7 de 64 bits, msysgit v1.9.2 e Notepad ++ v6.6.9 e isso funcionou perfeitamente . Obrigado.
Radu Murzea
2
@CoDEmanX Sem -multiInstele provavelmente sinalizará o Notepad ++ em execução para abrir o arquivo e sair imediatamente. Isso pode ser um grande problema se, independentemente do que for chamado, o editor espera que ele retorne apenas quando terminar de editar (ou seja, uma operação síncrona, como é o caso ao chamar vi). Experimente uma rebase interativa ( git rebase -i), por exemplo. Se isso ainda funcionar como esperado, você estará bem.
precisa saber é o seguinte
7

Isso funciona para mim

git config --global core.editor C:/Progra~1/Notepad++/notepad++.exe
Tim Scott
fonte
eu fiz o mesmo .. agora como abrir o bloco de notas ++ para confirmar com a mensagem ?? qual é o commad ?? por favor, você pode dar um exemplo #
shridutt kothari
4
Adicionar a -multiInstopção é crucial aqui, como nas outras respostas.
precisa saber é o seguinte
1
Isso não é bom por dois motivos. Primeiro, se o volume C: for NTFS com a opção 8.3 nome do arquivo desativada, não existe C:\Progra~1. Segundo, pode haver vários C:\Progra*diretórios, portanto o ~1sufixo não é necessariamente o válido.
kkm 24/10
5
git config core.editor "\"C:\Program Files (x86)\Notepad++\notepad++.exe\""
Jus
fonte
Isso fez o truque para mim! Posteriormente, o .gitconfig se parece com: [core] editor = \ "c: \\ Arquivos de Programas (x86) \\ Notepad ++ \\ notepad ++. Exe \" -multiInst -nosession -noPlugin
AtliB:
Veja mais votado resposta, que inclui isso (eu não li o suficiente)
AtliB
3

Eu uso a abordagem com a variável PATH. O caminho para o Notepad ++ é adicionado à variável PATH do sistema e o core.editor é definido da seguinte maneira:

git config --global core.editor notepad++

Além disso, você pode adicionar alguns parâmetros adicionais para o Notepad ++:

git config --global core.editor "notepad++.exe -multiInst"

(conforme detalhado em " Git core.editorfor Windows ")

E aqui você encontra algumas opções que pode usar ao declarar as opções de linha de comando do Notepad ++ .

starikovs
fonte
1

ATUALIZAÇÃO 2015

Se você descompactar / instalar o Notepad ++ c:\utils\npp\e renomear o notepad ++. Exe para npp.exe por simplicidade, tudo o que você precisará fazer é

git config --global core.editor c:/utils/npp/npp.exe

Sem scripts de wrapper ou outros truques. Não é necessário ter o Notepad ++ no PATH.

Dan Dascalescu
fonte
Atualização 2020: parece que você perdeu as opções para abrir uma nova instância do bloco de notas. Eu usei a partir cmd.exe git config --global core.editor "c:\\soft\\notepad++\\notepad++.exe -multiInst -notabbar -nosession -noPlugin"e está funcionando a partir de ambos cmd terminalegit bash
oleksa 07/02
1

Estou usando o Windows 10 e o bloco de notas ++ e estava recebendo esta mensagem de erro:

line 0: syntax error near unexpected token `(' git windows

Então, eu faço a configuração desta maneira:

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

e funciona

Juan Luis Vivas Occhipinti
fonte
0

Siga estas instruções,

  1. Primeiro, verifique se o notepad ++ está instalado no sistema e se é o programa padrão para abrir arquivos .txt.

  2. Em seguida, instale o gitpad no seu sistema. Observe que a última vez que verifiquei se o link para download estava quebrado, faça o download aqui, conforme explicado .

Então, ao confirmar, você deve ver o seu editor de texto favorito aparecendo.

Aditya P
fonte
0

Eu usei a solução de starikovs. Comecei com uma janela do bash e dei os comandos

cd ~
touch .bashrc

Então eu encontrei o arquivo .bashrc no Windows Explorer, abri-o com o bloco de notas ++ e adicionei

PATH=$PATH:"C:\Program Files (x86)\Notepad++"

para que o bash saiba onde encontrar o Notepad ++. (Ter o Notepad ++ no bash PATH é uma coisa útil por si só!) Então colei sua linha

git config --global core.editor "notepad++.exe -multiInst"

em uma janela do bash. Comecei uma nova janela bash para um repositório git para testar as coisas com o comando

git rebase -i HEAD~10

e o arquivo aberto no Notepad ++, conforme o esperado.

Ivan
fonte
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

Steven Penny
fonte