การบันทึกอัตโนมัติเป็นกลุ่มหรือไม่?


13

จาก:help swap-file:

การอัพเดต swapfile

ไฟล์ swap จะได้รับการอัพเดตหลังจากพิมพ์ 200 ตัวอักษรหรือเมื่อคุณไม่ได้พิมพ์อะไรเลยเป็นเวลาสี่วินาที สิ่งนี้จะเกิดขึ้นหากบัฟเฟอร์มีการเปลี่ยนแปลงไม่ใช่เมื่อคุณย้ายไปมาเท่านั้น สาเหตุที่ทำให้ไม่ทันสมัยอยู่ตลอดเวลาก็คือสิ่งนี้จะทำให้การทำงานปกติช้าลงมากเกินไป คุณสามารถเปลี่ยนจำนวน 200 ตัวอักษรด้วยตัวเลือก 'updatecount' คุณสามารถตั้งเวลาด้วยตัวเลือก 'updatetime' เวลาถูกกำหนดเป็นมิลลิวินาที หลังจากเขียนไปยังไฟล์ swap Vim จะซิงค์ไฟล์กับดิสก์ ใช้เวลาพอสมควรโดยเฉพาะในระบบ Unix ที่ไม่ว่าง หากคุณไม่ต้องการสิ่งนี้คุณสามารถตั้งค่าตัวเลือก 'swapsync' เป็นสตริงว่าง ความเสี่ยงในการสูญเสียงานจะยิ่งใหญ่ขึ้น ในระบบที่ไม่ใช่ Unix (MS-DOS, Amiga) ไฟล์ swap จะไม่ถูกเขียนเลย

จากนี้ฉันมีคำถามสองสามข้อ:

  1. นี่หมายความว่า Vim บันทึกการทำงานของคุณโดยอัตโนมัติเป็นครั้งคราวหรือไม่?

  2. "หลังจากเขียนไปยังไฟล์ swap Vim จะซิงค์ไฟล์ไปยังดิสก์" สิ่งนี้หมายความว่า? นี่หมายถึงไฟล์ที่ถูกเขียนลงหน่วยความจำก่อนแล้วจึงไปที่ดิสก์หรือมันเป็นอย่างอื่น?

  3. บอกว่าฉันกำลังจดบันทึกในชั้นเรียน: ฉันเขียนได้อย่างรวดเร็วและฉันไม่จำเป็นต้องออกจากโหมดแทรก แต่หลายครั้งฉันเปลี่ยนเป็นปกติเพียงเพื่อบันทึกงานของฉัน ฉันต้องทำสิ่งนี้หรือไม่หรือให้แน่ใจว่างานส่วนใหญ่ของฉันได้รับการบันทึกแม้ว่าฉันจะไม่ออกจากโหมดแทรกหรือไม่

คำตอบ:


9
  1. ใช่มันช่วยในการสลับไฟล์

คุณสามารถทำแบบทดสอบด่วนเพื่อรับความรู้สึกนี้ ไปที่ไดเรกทอรี พูดvim notest.txtและเขียนข้อความ คุณไม่จำเป็นต้องบันทึกไฟล์

หากคุณแสดงรายการไฟล์ในไดเรกทอรีทำงานคุณจะพบไฟล์สลับ คัดลอกไปยังไดเรกทอรีที่แตกต่างกัน (ที่คุณต้องไม่ "notes.txt" vim notest.txtแฟ้มตามที่พูด

คุณจะได้รับข้อความเกี่ยวกับการสลับที่มีอยู่การแก้ไขและตัวเลือกการเปิดเป็นอ่านอย่างเดียวกู้คืน ฯลฯ เลือกกู้คืนและ voila! "สำเนา" ของไฟล์ของคุณ

  1. ใช่การแลกเปลี่ยนถูกเก็บไว้ในหน่วยความจำ

เมื่อ Vim อ่านไฟล์มันจะเพิ่มเข้าไปใน RAM นั่นคือทั้งที่มีอยู่และใหม่ (ยังไม่ได้บันทึกไฟล์) เมื่อบันทึก swap แล้วจะถูกล้างไปยังดิสก์ HDD จากแรม

  1. ใช่และไม่.

ด้วยการตั้งค่าเริ่มต้นงานส่วนใหญ่ของคุณจะถูกบันทึกไว้ นั่นคือสำหรับทุก ๆ 200 ตัวอักษรป้อนหรือเมื่อคุณมีการหยุด 4 วินาที แม้ว่าฉันจะเชื่อถือไฟล์ swap ที่จะบันทึก แต่ฉันชอบที่จะบันทึกงานของฉันเมื่อฉันรู้ว่าฉันอยู่ในระบบที่ไม่เสถียร แต่ที่กล่าวมามีบางอย่างที่ค่อนข้างแน่ใจว่าจะทำให้งานเว้นแต่ว่าควรจะโชคร้ายมากและระบบโฮสติ้งจะตื่นตระหนกหลังจากเขียนประโยคที่สำคัญมาก

ในระยะสั้นมันก็เพียงพอที่จะบันทึกเมื่อการบรรยายจบลง หากระบบควรหยุดด้วยเหตุผลใด ๆ ก็ตามที่เคยมีในชั้นเรียนผลงานจะอยู่ที่นั่นจนกว่าจะมีการแลกเปลี่ยน

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


ในฐานะที่เป็นบันทึกด้านข้าง อย่างน้อยเมื่อใช้ไดเรกทอรีการทำงานสำหรับการแลกเปลี่ยนไฟล์ swap คือไม่เชื่อเรื่องตำแหน่งเมื่อมาถึงการกู้คืน ดังนั้นคุณสามารถคัดลอกไฟล์สลับไปยังตำแหน่งใหม่และกู้คืนไฟล์เป็นไฟล์ใหม่ โปรดทราบว่าชื่อไฟล์นั้นยากที่จะเข้ารหัสในการแลกเปลี่ยน เช่นนี้คุณไม่สามารถพูดได้:

cp .foo.txt.swp .bar.txt.swp

และ

vim bar.txt

foo.txtและคาดหวังแลกเปลี่ยนไฟล์ของ

หากคุณกำลังมากสนใจที่คุณสามารถทำได้ (บนระวัง *):

xxd -s 108 -l 800 -ps .foo.txt.swp | xxd -r -p

เพื่อรับเส้นทาง (พร้อมนิสัยบางอย่าง) ของไฟล์ต้นฉบับ ตามที่คุณจะเห็นเส้นทางแบบเต็มถูกเพิ่มเช่น:

~user/blah/blah/notes.txt

แต่เพียงbasenameถูกนำมาใช้ในการตรวจสอบการแลกเปลี่ยน

ในกรณีที่คุณยังสามารถตรวจสอบvim -rตัวเลือก - ซึ่งจะแสดงรายการแลกเปลี่ยนไฟล์ในไดเรกทอรีปัจจุบันและลดลง ดู:h crash-recoveryกับหัวข้อย่อย


0

สำหรับฉันแล้วการบันทึกบัฟเฟอร์เมื่อใดก็ตามที่ข้อความมีการเปลี่ยนแปลง:

autocmd TextChanged,TextChangedI <buffer> silent write

ผมพบว่ามันนี่ มันใช้งานได้สำหรับฉัน

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