อย่าเพิ่มบรรทัดใหม่ที่ท้ายไฟล์


11

Vim จะเพิ่มบรรทัดใหม่ที่ส่วนท้ายของไฟล์เมื่อทำการบันทึกและเป็นสาเหตุของข้อผิดพลาดในสคริปต์ PHP ของฉัน

ฉันจะทำให้กลุ่มไม่เพิ่มบรรทัดใหม่นี้ในการบันทึกได้อย่างไร


7
"มันทำให้เกิดข้อผิดพลาดในสคริปต์ PHP ของฉัน" -> นี่มันแปลก ๆ เหรอ? PHP ควรทำงานได้ดีกับการขึ้นบรรทัดใหม่ อันที่จริงนี่เป็นมาตรฐานที่ค่อนข้างมาก บางทีคุณอาจมีบรรทัดว่างหลังจาก?>PHP ที่ส่งออกไปยังเบราว์เซอร์ (เป็นสาเหตุให้ คุณไม่จำเป็นต้องมีการต่อท้าย?>และมักจะแนะนำให้ปล่อยไว้เพื่อป้องกันปัญหานี้
Martin Tournoij

ฉันเดาว่านั่นทำให้เข้าใจผิด สคริปต์ของเราตีความผลลัพธ์เป็นข้อผิดพลาด
Dan


1
ไม่ Vim ไม่ได้เพิ่มบรรทัดใหม่
romainl

คำตอบ:


11

นี่ไม่ใช่บรรทัดว่างเต็มรูปแบบเพียงแค่ขึ้นบรรทัดใหม่สุดท้ายที่ท้ายบรรทัดสุดท้าย เครื่องมือ Unix (เช่นมรดกของ Vim) ยืนยันที่จะเพิ่มสิ่งนั้นในขณะที่ระบบปฏิบัติการ Windows นั้นไม่เข้มงวดนัก คุณสามารถอ่านเพิ่มเติมได้ที่ทำไมไฟล์ควรลงท้ายด้วยการขึ้นบรรทัดใหม่

น่าเสียดายที่มันค่อนข้างซับซ้อนเพื่อป้องกันไม่ให้ Vim เขียน newline สุดท้าย ปลั๊กอิน PreserveNoEOLของฉันสามารถทำได้ สำหรับการอภิปรายของวิธีการที่ยังเห็นเป็นกลุ่มปิดการใช้งานอัตโนมัติ Newline ตอนท้ายของแฟ้ม


เพียงแค่สังเกตสำหรับผู้อ่านในอนาคตว่าในขณะที่คำตอบนี้เป็นที่ยอดเยี่ยมในขณะที่ในรุ่นล่าสุดของกลุ่มมีวิธีการแก้ปัญหาที่ง่ายมากในคำตอบที่โพสต์ในภายหลัง
Rich

11

ในเวอร์ชั่นใหม่ของ 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)


0

คุณได้ลองเปิดไฟล์ในโหมดไบนารีหรือไม่? ลองvim -b file_nameดู ไม่ควรเพิ่มบรรทัดใหม่เมื่อสิ้นสุดไฟล์


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