msysgit과 함께 메모장 ++ (또는 기타)을 어떻게 사용합니까?


210

msysgit에서 Notepad ++ 또는 vim 이외의 다른 편집기를 사용하려면 어떻게합니까?

나는 다음을 모두 시도했지만 아무 소용이 없었다.

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

1
오류 메시지가 있습니까? EDITOR 환경 변수 설정을 시도 했습니까?
csl


요청한대로 공백을 포함하여 스크립트 경로에 대한 정보를 추가했습니다.
VonC

답변:


76

2010-2011 업데이트 :

zumalifeguard솔루션 (공개)은 더 이상 쉘 래퍼 스크립트가 필요하지 않기 때문에 원래 솔루션 보다 간단합니다.

" Windows에서 Git과 함께 작동하도록 편집기를 설정하는 방법은 무엇입니까? " 에서 설명했듯이 , 래퍼를 선호합니다. 변경 사항을 등록하지 않고도 편집기를 쉽게 전환하고 편집기를 변경하거나 편집기의 경로를 변경할 수 있기 때문입니다. A를 git config다시 .
그러나 그것은 단지 나입니다.


추가 정보 : 다음 솔루션은 Cygwin 과 작동 하지만 zuamlifeguard의 솔루션은 작동하지 않습니다.


원래 답변.

다음과 같은:

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 "$*"

작동합니다. 이러한 명령은 쉘 스크립트로 해석되므로 모든 명령 세트를 sh스크립트 에 래핑하는 것이 좋습니다 .
( 프랭키 주석 : " .sh유닉스 스타일 줄 끝으로 파일 을 저장 하거나 신비한 오류 메시지를 수신하십시오!")

SO 질문에 대한 자세한 내용 Windows에서 Git과 함께 작동하도록 편집기를 설정하려면 어떻게해야합니까?

-multiInstGit의 각 호출에 대해 notepad ++의 새 인스턴스를 보장 하려면 ' '옵션을 참고하십시오 .

Cygwin에서 Git 을 사용하고 Cygwin의 Notepad ++사용 하려는 경우 scphantm 은 " Cygwin 내부의 Git에 Notepad ++ 사용 "에 설명되어 있습니다.

gitcygwin경로를 전달하고 npp무엇을 해야할지 모르겠다

따라서이 경우 스크립트는 다음과 같습니다.

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

가독성을위한 여러 줄 :

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

"$(cygpath -w "$*")"여기에 중요한 부분이되고.

Val -notabbar 옵션을 사용해서는 안된다고 의견을 말하고 삭제했습니다 .

리베이스하는 동안 탭을 비활성화하는 것은 좋지 않지만 -notab기본 설정이되므로 Settings>Preferences>General>TabBar> Hide>uncheck리베이스 후에 메모장을 시작할 때마다 일반 메모장 사용성에 많은 해를 끼 칩니다. 이건 지옥이야 당신은 지옥을 추천했습니다.

그래서 오히려 사용하십시오 :

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

그건:

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

npp.sh공백이있는 경로 ( ' '에서와 같이)에 스크립트 ' ' 를 배치하려면 c:\program files\...세 가지 옵션이 있습니다.

  • 다음과 같이 경로 (작은 따옴표 또는 큰 따옴표)를 인용하십시오.

    git config --global core.editor 'C:/program files/git/npp.sh'
  • 또는 짧은 이름 표기법을 사용해보십시오 (바보가 아닙니다).

    git config --global core.editor C:/progra~1/git/npp.sh
  • 또는 (내가 가장 좋아하는) 환경 변수 npp.sh의 디렉토리 부분에 ' '을 넣으십시오 %PATH%. 그런 다음 스크립트의 경로를 지정할 필요가 없습니다.

    git config --global core.editor npp.sh
  • Steiny 는 다음 과 같은 의견 을 제시합니다.

    git config --global core.editor '"C:/Program Files (x86)/Git/scripts/npp.sh"'

내 드라이브의 루트에 npp.sh를 배치 하여이 작업을 수행했습니다 (예 : C : /npp.sh). 공백이있는 폴더 (예 : D : / Program Files (x86) /Git/npp.sh)를 대상으로 시도 할 때 공간이 빠져 나가거나 올바르게 작동하는 방법은 무엇입니까?
PHLAK 2009

그 주위에 따옴표를 넣으십시오. 그의 예에서 그가 어떻게 전체에 대한 인용문을 보았습니까?
Fred

2
zumalifeguard의 답변이 저에게 효과적이었습니다. 쉘 스크립트 랩퍼가 필요하지 않습니다.
wbinford

1
@ wbinford : zumalifeguard의 답변에 대한 링크 (직접 제기 한)와 직접 명령이 아닌 래퍼 등록을 선호하는 이유를 추가했습니다.
VonC

1
위의 여러 조합을 시도했지만 git에서는 작동하지 않습니다. 내 경로에 npp 스크립트가 있고 cygwin 콘솔에서 다음을 입력하면 "npp {file}"npp 파일이 제대로 열립니다. 그러나 "git rebase -i"를 수행하면 npp 대신 빈 파일이 열립니다. 파일을 병합하십시오. 왜 이런 일이 일어날 지 아십니까?
scphantm

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

또는 64 비트 Windows 및 32 비트 Notepad ++ 설치의 경우 :

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

또는 32 비트 또는 64 비트 Windows의 명령 행에서 다음을 발행 할 수 있습니다. 레지스트리에서 notepad ++. exe의 위치를 ​​가져 와서 자동으로 사용하도록 git을 구성합니다.

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"

.BAT 또는 .CMD 파일에서 위를 배치하려면 % A를 %% A로 바꾸고 % B를 %% B로 바꾸어야합니다.


9
git 확장에서도 작동합니다. 64 비트 윈도우의 경우 엔트리는 다음과 같습니다"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin
Tim Abell

15
바보 같은 것은 -notabbar가 해당 세션뿐만 아니라 탭 표시 줄을 영구적으로 비활성화한다는 것입니다. 메모장 ++을 정상적으로 시작할 때 설정 대화 상자로 이동하여 탭 표시 줄을 다시 활성화해야합니다.
Oskar Berggren

4
나는 사용해야했습니다 : git config --global core.editor "c\:/Program\ Files\ \(x86\)/Notepad++/notepad++.exe -multiInst -nosession -noPlugin" ... 왜 그런지 확실하지 않습니다.
David Faivre 2013

1
나는 윈도우 7 64 비트, msysgit v1.9.2 메모장 ++ v6.6.9을 가지고이 일을 PERFECTLY . 감사.
Radu Murzea

2
@CoDEmanX 파일이 없다면 -multiInst이미 실행중인 메모장 ++에 신호를 보낸 다음 즉시 종료됩니다. 편집기를 호출 할 때 편집이 완료 될 때만 리턴 될 것으로 예상하는 경우 (즉, vi를 호출 할 때와 같이 동기 조작) 이는 큰 문제가 될 수 있습니다. git rebase -i예를 들어 대화식 리베이스 ( )를 사용해보십시오 . 이것이 여전히 예상대로 작동하면 괜찮습니다.
blubberdiblub

7

이것은 나를 위해 작동

git config --global core.editor C:/Progra~1/Notepad++/notepad++.exe

나는 똑 같았다. 이제 메시지로 커밋하기 위해 notepad ++를 여는 방법 ?? 코마 드는 무엇입니까 ?? 예를 들어주십시오
shridutt kothari

4
-multiInst다른 답변과 마찬가지로 옵션을 추가하는 것이 중요합니다.
blubberdiblub

1
이것은 두 가지 이유로 좋지 않습니다. 먼저, C : 볼륨이 8.3 파일 이름 옵션이 꺼져있는 NTFS 인 경우 전혀 없습니다 C:\Progra~1. 둘째, C:\Progra*디렉토리 가 여러 개있을 수 있으므로 ~1접미사가 반드시 유효한 것은 아닙니다.
kkm

5
git config core.editor "\"C:\Program Files (x86)\Notepad++\notepad++.exe\""

그것은 나를 위해 속임수를했다! 그 후 .gitconfig는 다음과 같습니다 : [core] editor = \ "c : \\ Program Files (x86) \\ Notepad ++ \\ notepad ++. exe \"
multiInst

이것을 포함하여 가장 높은 투표 답변을 봅니다 (필독하지 않았습니다)
AtliB


3

PATH 변수와 함께 접근 방식을 사용합니다. Notepad ++에 대한 경로가 시스템의 PATH 변수에 추가 된 후 core.editor는 다음과 같이 설정됩니다.

git config --global core.editor notepad++

또한 메모장 ++에 대한 추가 매개 변수를 추가 할 수 있습니다.

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

( " Git core.editorfor Windows "에 자세히 설명 된대로 )

그리고 여기 Notepad ++ 명령 줄 옵션 을 지정할 때 사용할 수있는 몇 가지 옵션이 있습니다 .


1

2015 업데이트

메모장 ++의 압축을 풀고 설치 c:\utils\npp\하고 notepad ++. exe의 이름을 npp.exe로 바꾸면 간단하게 할 수 있습니다.

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

래퍼 스크립트 또는 기타 속임수가 없습니다. PATH에 메모장 ++이 필요하지 않습니다.


2020 업데이트 : 새로운 메모장 인스턴스를 여는 옵션을 놓친 것 같습니다. 나는 cmd.exe를에서 사용했습니다 git config --global core.editor "c:\\soft\\notepad++\\notepad++.exe -multiInst -notabbar -nosession -noPlugin"그것은 모두에서 작동 cmd terminal하고git bash
oleksa

1

Windows 10 및 notepad ++를 사용하고 있는데이 오류 메시지가 나타납니다.

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

그래서 나는 이런 식으로 설정을합니다.

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

그리고 그것은 작동


0

이 지침을 따르십시오.

  1. 먼저 시스템에 notepad ++가 설치되어 있고 .txt 파일을 여는 기본 프로그램 인지 확인하십시오 .

  2. 그런 다음 시스템에 gitpad 를 설치 하십시오. 마지막으로 다운로드 링크가 끊어 졌는지 확인 했으므로 설명 대로 여기 에서 다운로드 하십시오 .

그런 다음 커밋하는 동안 좋아하는 텍스트 편집기가 나타납니다.


0

나는 starikovs의 솔루션을 사용했습니다. 나는 bash 창으로 시작하여 명령을 내렸다.

cd ~
touch .bashrc

그런 다음 Windows 탐색기에서 .bashrc 파일을 찾아서 notepad ++로 열고 추가했습니다.

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

bash는 메모장 ++를 찾을 위치를 알 수 있습니다. (bash PATH에 메모장 ++이있는 것은 그 자체로 유용한 것입니다!) 그런 다음 그의 줄을 붙여 넣었습니다.

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

bash 창으로. 명령으로 물건을 테스트하기 위해 자식 저장소에 대한 새로운 bash 창을 시작했습니다.

git rebase -i HEAD~10

원하는대로 파일을 메모장 ++에서 열었습니다.


0

Cygwin의 솔루션은 다음과 같습니다.

#!/bin/dash -e
if [ "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=
fi
Notepad2 ${k+"$k"}
  1. 경로가 없으면 경로를 전달하지 마십시오.

  2. 경로가 비어 있으면 빈 경로를 전달하십시오.

  3. 경로가 비어 있지 않으면 Windows 형식으로 변환하십시오.

그런 다음이 변수를 설정했습니다.

export EDITOR=notepad2.sh
export GIT_EDITOR='dash /usr/local/bin/notepad2.sh'
  1. EDITOR는 스크립트가 Git과 작동하도록합니다

  2. GIT_EDITOR는 스크립트가 허브 명령 과 작동하도록 합니다

출처

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.