จะเกิดอะไรขึ้นถ้าฉันใช้ vi กับไฟล์ขนาดใหญ่


16

แม้ว่าเราจะไม่ได้รับคำสั่ง แต่เพื่อนร่วมงานของฉันใช้ vi เพื่อดูไฟล์ข้อความขนาดใหญ่ (server.log 3.5 GB) สิ่งนี้เต็มไปด้วย / var / tmp และก่อให้เกิดปัญหาบางอย่างบนเซิร์ฟเวอร์

อะไรทำให้เกิดสิ่งนี้ ทำไมเราไม่ควรใช้ vi สำหรับไฟล์ขนาดใหญ่?


3
vi(หรือvimสำหรับเรื่องนั้น) เป็นเรื่องที่ช้ามากสำหรับไฟล์ขนาดใหญ่และอาจใช้ไม่ได้หากไม่มีจำนวนบรรทัดมาก นอกจากนี้ไฟล์ต้องมีขนาดพอดีกับหน่วยความจำ ใช้lessสำหรับไฟล์ขนาดใหญ่มันเร็วกว่าและเพียงพอสำหรับการอ่าน / ดูไฟล์บันทึก
Marco

@Marco ทำไมไม่คิดว่ามันเป็นคำตอบ?
Bernhard

1
เพราะมันไม่ใช่คำตอบสำหรับคำถาม แต่เป็นข้อคิดเห็น quesiton คือ "เกิดอะไรขึ้นทำไมเราไม่ควรใช้ vi สำหรับไฟล์ขนาดใหญ่"
Kiwy

ดูความคิดเห็นด้วยคำตอบของฉัน
rɑːdʒɑ

คำตอบ:


7

ไดเร็กทอรีดีฟอลต์ (/ var / tmp) สำหรับบัฟเฟอร์การแก้ไข vi ต้องการพื้นที่เท่ากับประมาณสองเท่าของขนาดไฟล์ที่คุณใช้งานอยู่เนื่องจากvi ใช้บรรทัดเพิ่มเติมสำหรับการจัดการบัฟเฟอร์

หากไดเร็กทอรี / var / tmp มีพื้นที่ไม่เพียงพอสำหรับบัฟเฟอร์การแก้ไข (เช่นคุณกำลังทำงานกับไฟล์ขนาดใหญ่หรือระบบขาดพื้นที่

บางครั้งคุณอาจได้รับคุณจะได้รับข้อความแสดงข้อผิดพลาดดังต่อไปนี้

Not enough space in /var/tmp.

คุณสามารถอ่านวิธีการแก้ไขได้ที่นี่: http://kb.iu.edu/data/akqv.html


"vi การแก้ไขบัฟเฟอร์ต้องการพื้นที่ว่างเท่ากับสองเท่าของขนาดไฟล์ที่คุณใช้งานอยู่" Source?
atripathi

1
นานมาแล้วฉันได้อ่านจากkb.iu.edu/data/akqv.html kb.iu.edu/data/akqv.htmlดังนั้นฉันมอบมันให้กับคุณ
rɑːdʒɑ

20

เสียงเรียกเข้าไม่ได้ถูกออกแบบมาสำหรับไฟล์ขนาดใหญ่ มีคุณสมบัติบางอย่างที่ช้าลงอย่างมากประสบการณ์ผู้ใช้ ตัวอย่างเช่นมันโหลดไฟล์ลงในหน่วยความจำซึ่งโดยทั่วไป จำกัด การแก้ไขไฟล์ที่เล็กกว่าขนาดหน่วยความจำของคุณ นอกจากนี้ฟีเจอร์ต่าง ๆ เช่นการเน้นไวยากรณ์, การสลับไฟล์และการเลิกทำนั้นไม่มีประสิทธิภาพมากกับไฟล์ขนาดใหญ่และทำให้ช้าลงมากยิ่งขึ้น ปัญหาอื่นคือvimคาดว่าจะไม่ยาวเกินไป หากไฟล์มีอักขระขึ้นบรรทัดใหม่ไม่กี่ตัวvimใช้ไม่ได้

ที่มีการกล่าวว่ามีปลั๊กอินเช่นกลุ่ม-largefileว่าการตั้งค่าโดยเฉพาะอย่างยิ่งการเปลี่ยนแปลงที่จะมีประสิทธิภาพมากขึ้นด้วยไฟล์ขนาดใหญ่ แต่ในท้ายที่สุดvimจะไม่เร็วเมื่อคุณโยนหลาย GiBs ที่มัน

บรรทัดล่างคือห้ามใช้vimกับไฟล์ขนาดใหญ่ หากคุณต้องการดู (ตรงกันข้ามกับแก้ไข) lessไฟล์ขนาดใหญ่ใช้งาน หากคุณต้องการค้นหารูปแบบ ues สแลชเพื่อเริ่มค้นหารูปแบบ:

/<pattern>  # forward search
?<pattern>  # backward search

หากคุณต้องการกรองเอาท์พุทใช้เครื่องหมายและ:

&<pattern>

shift-fจากนั้นเริ่มต้นการส่งออกอย่างต่อเนื่องโดยใช้ คุณสามารถออกจากการแสดงผลต่อเนื่องด้วยctrl-cและปรับแต่งหรือยกเลิกรูปแบบตัวกรองของคุณหรือเริ่มการค้นหา

เพื่อแก้ไขไฟล์ขนาดใหญ่ใช้เครื่องมือเช่นsedพวกเขามีประสิทธิภาพและออกแบบมาเพื่อวัตถุประสงค์นี้มาก

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