Vi บน Linux: แสดงการสิ้นสุดบรรทัด ^ M สำหรับไฟล์รูปแบบ DOS


10

บน Solaris ถ้าคุณเปิดไฟล์ใน vi ที่มีจุดสิ้นสุดของบรรทัด Windows จะแสดงเป็น ^ M ที่ส่วนท้ายของทุกบรรทัด

บน Linux vi มีความฉลาดและเข้าใจรูปแบบไฟล์ Windows และไม่แสดง ^ M

มีการตั้งค่าเพื่อให้ Linux vi ทำงานเหมือนกับ Solaris ในส่วนนี้หรือไม่?

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

ขอบคุณ


บน Linux, vi มักจะเป็นกลุ่มของ Bram Moolenaar ฉันคาดว่า vi บน Solaris คือ Bill Joy vi , ดั้งเดิม, แท้ๆ แต่มีความสามารถน้อยกว่า
RedGrittyBrick

ตัวฉันvimโดยค่าเริ่มต้นผมมักจะมองไม่เห็น^Mแต่บางครั้งมีหนึ่งในตอนท้ายของแฟ้ม
trysis

คำตอบ:


10

ลอง:set ffs=unixเมื่อเริ่มต้น vi (หรือตั้งเป็นค่าเริ่มต้นใน vimrc) ซึ่งควรจะแสดงตัวอักษร CR ^Mทั้งหมดเป็น

vi คาดเดาอัตโนมัติว่ารูปแบบใดที่จะใช้โดยขึ้นอยู่กับว่ามีบรรทัดที่ลงท้ายด้วย LF หรือ CR / LF ทั้งคู่หรือไม่


2
@RedGrittyBrick - ในระบบของฉัน:set listแสดง$ที่ท้ายบรรทัดทั้งหมด (รูปแบบ Unix & DOS) ดังนั้นจึงไม่ช่วยแยกความแตกต่างระหว่างทั้งสอง
sss

@sss: ความผิดพลาดของฉันฉันจะลบความคิดเห็น
RedGrittyBrick

2
@gman - คำสั่งนี้ไม่ได้ผลสำหรับฉันอย่างแม่นยำ - ฉันได้รับNot an editor command: ffs=unix- แต่ให้ฉันไปในเส้นทางที่ถูกต้อง ทำงาน:set ffs=unixกับไฟล์ที่เปิดใน vi ไม่ได้ทำงาน - ไม่มีข้อผิดพลาด แต่ไม่มีอะไรเกิดขึ้น ฉันใส่set ffs=unixไฟล์. vimrc ของฉันลงไป
sss

ฉันมีประสบการณ์เหมือนกับ @sss
SSH

ดังนั้นจึงขัดกับการกำหนดค่าผู้ใช้ที่เตรียมไว้อย่างรอบคอบ ฉันมักจะต้องการffsวิธีที่มันเป็น แต่ดูคำตอบจาก @wisbucky
fork0

2

หากต้องการแสดงการสิ้นสุดบรรทัดดอสสำหรับไฟล์ปัจจุบัน:

:e +ff=unix

สิ่งนี้บังคับให้รูปแบบไฟล์เป็นยูนิกซ์ซึ่งจะแสดงผลCRเป็น^M


หากต้องการทำให้การตั้งค่านี้เป็นแบบถาวรเพิ่มไปที่~/.vimrc:

set ffs=unix

โปรดทราบว่าการตั้งค่า .vimrc คือไม่ffsff


:e ++ff=unixฉันควรเชื่ออย่างนี้
fork0

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