Vim จะเพิ่มบรรทัดใหม่ที่ส่วนท้ายของไฟล์เมื่อทำการบันทึกและเป็นสาเหตุของข้อผิดพลาดในสคริปต์ PHP ของฉัน
ฉันจะทำให้กลุ่มไม่เพิ่มบรรทัดใหม่นี้ในการบันทึกได้อย่างไร
Vim จะเพิ่มบรรทัดใหม่ที่ส่วนท้ายของไฟล์เมื่อทำการบันทึกและเป็นสาเหตุของข้อผิดพลาดในสคริปต์ PHP ของฉัน
ฉันจะทำให้กลุ่มไม่เพิ่มบรรทัดใหม่นี้ในการบันทึกได้อย่างไร
คำตอบ:
นี่ไม่ใช่บรรทัดว่างเต็มรูปแบบเพียงแค่ขึ้นบรรทัดใหม่สุดท้ายที่ท้ายบรรทัดสุดท้าย เครื่องมือ Unix (เช่นมรดกของ Vim) ยืนยันที่จะเพิ่มสิ่งนั้นในขณะที่ระบบปฏิบัติการ Windows นั้นไม่เข้มงวดนัก คุณสามารถอ่านเพิ่มเติมได้ที่ทำไมไฟล์ควรลงท้ายด้วยการขึ้นบรรทัดใหม่
น่าเสียดายที่มันค่อนข้างซับซ้อนเพื่อป้องกันไม่ให้ Vim เขียน newline สุดท้าย ปลั๊กอิน PreserveNoEOLของฉันสามารถทำได้ สำหรับการอภิปรายของวิธีการที่ยังเห็นเป็นกลุ่มปิดการใช้งานอัตโนมัติ Newline ตอนท้ายของแฟ้ม
ในเวอร์ชั่นใหม่ของ Vim ในที่สุดก็มีตัวเลือกสำหรับสิ่งนี้
Vim 7.4.785 เพิ่มตัวเลือก 'fixeol' ที่สามารถปิดการใช้งานเพื่อรักษา EOL ที่ขาดหายไปโดยอัตโนมัติในตอนท้ายของไฟล์
(ดูหน้าวิกิ: http://vim.wikia.com/wiki/Do_not_auto-add_a_newline_at_EOF )
ในการ~/.vimrc
เพิ่มบรรทัดนี้ของคุณ:
set nofixeol
เปิดใหม่vim
ตอนนี้ไม่ควรเพิ่มบรรทัดใหม่ที่ท้ายไฟล์
(ใช้ได้เฉพาะตั้งแต่รุ่น 7.4.785)
คุณได้ลองเปิดไฟล์ในโหมดไบนารีหรือไม่? ลองvim -b file_name
ดู ไม่ควรเพิ่มบรรทัดใหม่เมื่อสิ้นสุดไฟล์
xxd
เพื่อยืนยัน แต่ก็ยังเพิ่ม linefeed ( 0a
) แม้ในโหมดไบนารี
?>
PHP ที่ส่งออกไปยังเบราว์เซอร์ (เป็นสาเหตุให้ คุณไม่จำเป็นต้องมีการต่อท้าย?>
และมักจะแนะนำให้ปล่อยไว้เพื่อป้องกันปัญหานี้