ข้อผิดพลาด: มีปัญหากับตัวแก้ไข 'vi' เมื่อใช้กับ git


12

ฉันมีปัญหานี้แปลกกับการใช้เป็นบรรณาธิการสำหรับvigit commit -a

ไหลตามปกติคือฉันพิมพ์git commit -a, viปรากฏผมใส่ข้อความกระทำของฉันแล้วเพื่อบันทึกและการออกจาก:wqvi

มันใช้งานได้ดี อย่างไรก็ตามบางครั้งฉันพิมพ์ผิดและแทนที่จะ:wqพิมพ์:Wq(เพราะฉันใช้กะ:) จากนั้นเมื่อฉันแก้ไขตัวเองและพิมพ์:wqอีกครั้งgitให้ข้อผิดพลาดต่อไปนี้:

error: There was a problem with the editor 'vi'.
Please supply the message using either -m or -F option.

ฉันจะแก้ไขสิ่งนี้ได้อย่างไร


สิ่งที่รุ่นของgitและvi? ฉันไม่สามารถทำซ้ำสิ่งนี้ด้วย vim 7.3, git เวอร์ชัน 1.7.11.1
คริสโตเฟอร์

@ คริสโตเฟอร์: vi 7.3และคอมไพล์1.7.9.6 (Apple Git-31.1)ค่าเริ่มต้นของ Mountain Lion
Afaik

คำตอบ:


14

viมีสถานะที่ไม่เป็นศูนย์แม้ว่าจะไม่มีรายละเอียดเพิ่มเติมเกี่ยวกับการตั้งค่าของคุณ แต่ก็ยากที่จะบอกได้ว่าทำไม หากคุณใช้ปลั๊กอินจำนวนมากvimคุณอาจลองย้าย.vimrcไฟล์ไปที่.vimrc.backและดูว่าคุณสามารถทำซ้ำได้หรือไม่ มีแหล่งข้อมูลไม่กี่แห่งที่กล่าวถึงปัญหานี้รวมถึงอย่างน้อยหนึ่งแหล่งที่มีวิธีแก้ปัญหาที่อาจเกิดขึ้น:

git config --global core.editor /usr/bin/vim

ฉันจะลองลบคุณออก.vimrcก่อน ดูเหมือนจะทำให้เกิดความหวาดกลัวมากขึ้น


5
ขอขอบคุณgit config --global core.editor /usr/bin/vimแก้ไข
houbysoft

1
@ วิธีแก้ปัญหาของ applOOb นั้นดีกว่าเนื่องจากไม่ใช่แฮ็คแบบนี้
jefflunt

14

ตามที่ได้รับคำตอบที่นี่: https://stackoverflow.com/questions/22699614/git-commit-messages-lost-by-vi

ทางออกที่แท้จริงคือ

git config --global core.editor vim -f

ตามเอกสารที่เป็นกลุ่ม - -f option should be used when Vim is executed by a program that will wait for the edit session to finish


2
ในที่สุด ... นี่คือทางออกที่ถูกต้อง นอกจากนี้ยังแก้ไขปัญหาการกดปุ่ม:Wและให้คอมไพล์ปฏิเสธข้อความยืนยันของคุณเมื่อคุณบันทึกในภายหลัง
Ryanmt

ทางออกที่เป็นวิธีแก้ปัญหาและไม่ใช่วิธีแก้ปัญหาบางอย่าง! ฉันหวังว่าผู้ที่อ่านคำตอบที่ยอมรับจะเข้าใจความแตกต่างระหว่างการvimเรียกใช้ตามปกติกับแฮ็คที่พวกเขากำลังใช้อยู่
jefflunt

0

คุณใช้ปลั๊กอิน golang vim หรือไม่? บรรทัดนี้ทำให้เกิดปัญหาค่าการออก vi สำหรับฉัน: filetype plugin indent off

การลบบล็อกปลั๊กอิน golang ทั้งหมดในการ.vimrcแก้ไขปัญหา การติดตั้งปลั๊กอิน golang โดยใช้ fugitive นั้นง่ายเหมือน:ln -s $GOROOT/misc/vim ~/.vim/bundle/vim-golang

(ฉันเพิ่งบันทึกปัญหาในปัญหานี้ในvim-golang github )


0

มีบางอย่างผิดปกติกับ Git config ฉันเดา

ดังนั้นทางออกคือการรีเซ็ต Git config และมันใช้ได้กับฉัน:

git config --global core.editor $(which vim)

$(which vim)มีความยืดหยุ่นมากกว่า/usr/bin/vim(บางคนเรียกใช้อาจไม่ได้อยู่ที่นั่นสำหรับบางคน)

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