cygwin에서 git 편집기로 gVim


8

msysgit을 사용하고 gvim을 내 자식 편집기로 사용하고 싶습니다.

git bash 대신 cygwin bash를 사용합니다.

달리는

$ /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe 

gvim을 시작합니다. 그러나 이것을 git editor로 설정하면 :

$ git config core.editor /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe

커밋을 실행하면 다음과 같은 결과가 나타납니다.

/cygdrive/c/Program Files (x86)/Vim/vim73/gvim.exe: -c: line 0: syntax error near unexpected token `('

그런 다음 필요한 경우 이스케이프 된 백 슬래시를 추가하십시오.

$ git config core.editor /cygdrive/c/Program\\\ Files\\\ \\\(x86\\\)/Vim/vim73/gvim.exe

이것은 여전히 ​​나에게 준다 :

/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe: /cygdrive/c/Program Files (x86)/Vim/vim73/gvim.exe: No such file or directory
error: cannot run /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe: No such file or directory
error: There was a problem with the editor '/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe'.

문제는 "실행할 수 없음"이후에서 문자열을 복사하여 붙여 넣을 수 있다는 것입니다. 프로그램 파일 (x86)의 공백이나 괄호로 인해 발생할 수 있다고 생각합니다 (지상에서 무슨 생각을하고 있었습니까?).

cygwin이 잘 처리하는 것처럼 보이므로 $ PATH에 설정되어 있고 / usr / local / bin에 symlink를 만들 수 있다고 생각했습니다.

$ git config core.editor /usr/local/bin/gvim

/ usr / local / bin / gvim이 gvim을 시작 함을 확인합니다. 여전히 커밋을 실행하면 다음과 같은 결과가 나타납니다.

error: cannot spawn /usr/local/bin/gvim.exe: No such file or directory
error: There was a problem with the editor '/usr/local/bin/gvim.exe'.

core.editor 설정 해제 및 시도

$ export GIT_EDITOR=/usr/local/bin/gvim.exe 

나에게 같은 오류가 발생합니다.

SO 답변 은 스크립트를 사용하여 편집기를 여는 것이 좋습니다.

/ usr / local / bin에서 소프트 링크 gvim.exe를 제거하고

$ cat > gvim
#!/bin/sh
/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe

$ chmod u+x gvim

스크립트를 테스트 실행하면 작동하며 gvim이 시작됩니다.

$ gvim

불행히도 커밋을 실행하면 오류가 발생합니다.

$ git commit
error: cannot spawn /usr/local/bin/gvim: No such file or directory
error: There was a problem with the editor '/usr/local/bin/gvim'.

gVim을 자식 편집기로 사용하려면 어떻게해야합니까? 아무도 그것을 시도 했습니까? 내가 실수를 했습니까? 나는 리눅스에 관해서는 초보자임을 인정해야합니다.


cygwin vi를 대신 사용해 보셨습니까? 명령을 시도 했습니까 which gvim?
Somantra

소프트 링크 나 스크립트가있는 경우에만 / usr / local / bin / gvim을 출력하는 gvim gVim을 원하는 이유를 더 명확하게 설명해야합니다. 매일 사용하고 원하는대로 설정했습니다. 다른 것을 사용하면 두 개의 편집기 설정이 유지됩니다.
johnny

rc 파일에 심볼릭 링크 또는 리포지토리 사용을 고려할 수 있습니다.
Somantra

cygwin 쉘 스크립트가 아닌 배치 파일을 사용하여이 작업을 수행해야 할 수도 있습니다. 또한 Windows 기반 gVim과 cgywin이 $ HOME을 설정하는 환경 간의 HOME 환경 변수 충돌에주의하십시오.
Heptite

@ Heptite 나는 그것을 위해 박쥐 파일을 만들려고했습니다. 불운. 내 질문에 언급 할 수없는 오류가 발생합니다. 그리고 당신은 갈등에 대해 옳습니다. 나는 gvim과 충돌하지 않고 git과 충돌했다. cygwin의 git config --global은 cygwin 홈에 저장되고 msysgit의 windows 홈에 저장되는 것과 동일합니다.
johnny

답변:


6

git config는 한 수준의 따옴표를 제거하는 것처럼 보이므로 다른 따옴표를 추가하십시오. 이것은 다른 편집자와 함께 나를 위해 작동합니다.

git config core.editor "\"c : / 프로그램 파일 (x86) /Vim/vim73/gvim.exe \ ""

(경로를 둘러싼 이스케이프 따옴표에주의하십시오. 이렇게하면 git commit이 "c : / Program Files (x86) /Vim/vim73/gvim.exe"가 될 때마다 편집기가 시작됩니다. ()을 의미하는 것으로 해석하려고 시도하지 마십시오.)


0

경로명의 공백으로 작업 할 때는 일반적으로 공백을 따옴표로 묶는 것이 좋습니다. 이렇게하면 문제가 해결됩니다.

git config core.editor "/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe"

불행히도. / cygdrive / c / Program \ Files \ (x86) /Vim/vim73/gvim.exe : / cygdrive / c / Program Files (x86) /Vim/vim73/gvim.exe : 해당 파일 또는 디렉토리 오류가 없습니다 : / cygdrive / c / Program \ Files \ (x86) /Vim/vim73/gvim.exe : 해당 파일 또는 디렉토리 오류가 없습니다 : 편집기 '/ cygdrive / c / Program \ Files \ (x86) / Vim /에 문제가있었습니다 vim73 / gvim.exe '. 그래도 경로는 정확합니다. / cygdrive / c / Program \ Files \ (x86) /Vim/vim73/gvim.exe
johnny

죄송합니다. cygwin으로 시도했지만 cygwin-git 패키지를 사용했습니다. cygwin과 msysgit을 어떻게 연결했는지 알려 주시겠습니까?
p.vitzliputzli

msysgit을 설치하고 오랫동안 git bash를 사용했습니다. cygwin을 사용하기 시작한 이유를 정확히 기억하지 못하지만, 내가 한 일은 () cygwin $ PATH에 Git (/ cygdrive / c / Program Files (x86) / Git / bin) 경로를 추가하는 것입니다.
johnny

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

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

  3. 경로가 상대적인 경우 그대로 전달

  4. 경로가 절대적인 경우 Windows 형식으로 변환

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

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

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

출처

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