gVim เป็น git editor ภายใต้ cygwin


8

ฉันใช้ msysgit และฉันต้องการ gvim เป็น git editor ของฉัน

ฉันใช้ cygwin bash แทน git 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'.

สิ่งคือฉันสามารถคัดลอกสตริงจากหลังจาก "ไม่สามารถเรียกใช้" และวางมันและมันจะทำงาน ฉันเดาว่าอาจเกิดจากช่องว่างหรือวงเล็บใน Program Files (x86) (พวกเขากำลังคิดอะไรอยู่)

เนื่องจาก cygwin ดูเหมือนว่าจะจัดการมันได้ดีฉันคิดว่าฉันสามารถสร้าง symlink ในคำพูด / usr / local / bin ได้เนื่องจากมันอยู่ใน $ PATH ของฉันและตั้งค่า

$ 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นี้แนะนำให้ฉันใช้สคริปต์เพื่อเปิดโปรแกรมแก้ไข

ฉันลบซอฟต์ลิงค์ gvim.exe ออกจาก / usr / local / bin และ

$ 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 เป็น git editor มีใครลองบ้างไหม? ฉันทำผิดพลาดหรือไม่? ฉันต้องยอมรับการเป็นสามเณรเมื่อพูดถึง linux


คุณลองใช้ cygwin vi แทนไหม? คุณลองคำสั่งแล้วwhich gvimหรือยัง
Somantra

gvim ใดที่เอาต์พุต / usr / local / bin / gvim เฉพาะเมื่อ soft link หรือสคริปต์อยู่ที่นั่น ฉันควรระบุเหตุผลที่ต้องการ gVim ให้ชัดเจนยิ่งขึ้น ฉันใช้มันทุกวันและตั้งค่าตามที่ต้องการ ถ้าฉันใช้อันอื่นฉันจะมีสองการตั้งค่าบรรณาธิการเพื่อรักษา
johnny

คุณอาจต้องการใช้ symlink หรือ repo สำหรับไฟล์ rc ของคุณ
Somantra

คุณอาจต้องทำสิ่งนี้กับไฟล์แบตช์แทนที่จะเป็นเชลล์สคริปต์ cygwin นอกจากนี้ระวังความขัดแย้งของตัวแปรสภาพแวดล้อม HOME ระหว่าง gVim ที่ใช้ Windows และสิ่งที่ cgywin จะตั้งค่า $ HOME เป็น
Heptite

@Heptite ฉันพยายามสร้างไฟล์ bat ด้วยเช่นกัน ไม่มีโชค. ฉันได้รับข้อผิดพลาดที่เกิดขึ้นไม่สามารถพูดถึงในคำถามของฉัน และคุณพูดถูกเกี่ยวกับความขัดแย้ง ฉันไม่ได้มีข้อขัดแย้งกับ gvim แต่มี git git config - global ภายใต้ cygwin บันทึกไปยัง cygwin home, เดียวกันภายใต้ msysgit บันทึกไปยัง windows home
johnny

คำตอบ:


6

ดูเหมือนว่าการกำหนดค่า git จะลบเครื่องหมายอัญประกาศหนึ่งระดับดังนั้นโปรดเพิ่มอีกระดับ สิ่งนี้ใช้ได้กับฉัน (พร้อมกับเครื่องมือแก้ไขอื่น):

git config core.editor "\" c: / ไฟล์โปรแกรม (x86) /Vim/vim73/gvim.exe \ ""

(โปรดสังเกตเครื่องหมายคำพูดที่ใช้ Escape โดยรอบพา ธ ซึ่งจะทำให้ตัวแก้ไขเริ่มต้นเมื่อใดก็ตามที่คุณทำเช่นคอมไพล์ยอมรับว่าเป็น "c: / Program Files (x86) /Vim/vim73/gvim.exe" ดังนั้นด้วยเครื่องหมายคำพูดที่บอกให้เชลล์ bash อย่าพยายามตีความ () ตามที่คิดว่าหมายถึงอะไร)


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 ไฟล์ (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 / โครงการ \ Files \ (x86) /Vim/vim73/gvim.exe
จอห์นนี่

ฉันขอโทษฉันลองใช้ด้วย cygwin แต่ฉันใช้แพ็คเกจ cygwin-git คุณสามารถบอกฉันว่าคุณเชื่อมต่อ cygwin และ msysgit ได้อย่างไร?
p.vitzliputzli

ฉันติดตั้ง msysgit และใช้ทุบตี git เป็นเวลานาน ฉันจำไม่ได้ว่าทำไมฉันถึงเริ่มใช้ cygwin แต่สิ่งที่ฉันทำ (ทำ) คือฉันเพิ่มพา ธ ไปยัง Git (/ cygdrive / c / Program Files (x86) / Git / bin) ใน cygwin $ PATH ของฉัน
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. ถ้า path เป็นค่าสัมบูรณ์ให้แปลงเป็นรูปแบบ Windows

จากนั้นฉันจะตั้งค่าตัวแปรเหล่านี้:

export EDITOR=gvim.sh
export GIT_EDITOR='dash /usr/local/bin/gvim.sh'
  1. EDITOR อนุญาตให้สคริปต์ทำงานกับ Git

  2. GIT_EDITOR อนุญาตให้สคริปต์ทำงานกับคำสั่ง Hub

แหล่ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.