วัตถุประสงค์ของการแลกเปลี่ยนไฟล์คืออะไร?


73

เมื่อฉันแก้ไขไฟล์, กลุ่มมีแนวโน้มที่จะสร้างชื่อไฟล์ซึ่งฉันพบว่าน่ารำคาญ จากฉันเห็นว่าตัวเลือกที่ไม่สร้างไฟล์ swap.filename.swpvim -h-n

มีคำสั่ง vimrc ที่ฉันสามารถใช้เพื่อปิดการแลกเปลี่ยนไฟล์โดยปริยายหรือไม่?

วัตถุประสงค์ของการแลกเปลี่ยนไฟล์คืออะไรและฟังก์ชั่นใดที่ฉันจะพลาดโดยการระงับมัน?


FWIW ฉันพบไฟล์ swap น่ารำคาญเช่นกันและในขณะที่ฉันลองใช้noswapfileตามที่แนะนำด้านล่าง ในที่สุดฉันก็ยอมแพ้และปิดมันลงไปเพราะเห็นได้ชัดว่ามีประโยชน์มากกว่าความรำคาญ - buuuuuut ฉันจำไม่ได้จริงๆว่าอะไรทำให้ฉันมั่นใจในการกู้คืนการใช้ไฟล์สวอป อาจเป็นไปได้ว่าคอมพิวเตอร์ของฉันทำงานล้มเหลวและฉันไม่สามารถกู้คืนไฟล์บางไฟล์ที่ฉันทำหายไปซึ่งน่าจะเป็นเรื่องเล็กน้อยเมื่อเปิดไฟล์ swap
Kyle Strand

คำตอบ:


89

เหตุผลในการแลกเปลี่ยนไฟล์

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

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

ปิดการใช้งานไฟล์สลับ

หากคุณต้องการปิดใช้งานการสร้างไฟล์ swap ทั้งหมด (ซึ่งฉันไม่แนะนำ) คุณก็สามารถเพิ่มไฟล์set noswapfileของคุณ.vimrcได้ นี่เป็นการตั้งค่าส่วนกลางของตัวเลือก จากนั้นคุณสามารถแทนที่ทับบัฟเฟอร์เฉพาะได้โดยใช้:setlocal swapfileขณะเรียกใช้ Vim

การจัดระเบียบไฟล์แลกเปลี่ยน

หากปัญหาของคุณเกี่ยวกับไฟล์เพิ่มเติมแพร่กระจายไปทั่วระบบไฟล์ของคุณคุณสามารถรวมไฟล์สลับทั้งหมดได้ในที่เดียว ตัวอย่างเช่นสร้าง~/.vim/tmpไดเรกทอรีแล้วเพิ่ม

set directory^=$HOME/.vim/tmp//

.vimrcที่คุณ 'directory'ตัวเลือกที่มีรายชื่อของไดเรกทอรีที่เป็นกลุ่มจะใช้ในการลองและการจัดเก็บแฟ้มสลับ

^=ไวยากรณ์สำหรับ:setprepends ชื่อไดเรกทอรีที่หัวของรายการเพื่อให้เป็นกลุ่มจะตรวจสอบไดเรกทอรีที่แรก

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

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


4
อะไรคือประโยชน์ของการแลกเปลี่ยนไฟล์ในการยกเลิกแบบถาวร - ตอนนี้มันอยู่ในกลุ่มแล้ว?
alpha_989

vim-auto-saveผมใช้ สิ่งนี้ไม่จำเป็นสำหรับการแลกเปลี่ยนไฟล์หรือไม่
เควิน

@ เควินมันขึ้นอยู่กับ หากปลั๊กอินนั้นก่อให้เกิดการบันทึกในทุกสถานการณ์ที่ Vim จะเขียน swapfile อาจเป็นไปได้ มิฉะนั้นจะยังคงมีช่วงเวลาที่บัฟเฟอร์ไม่ถูกบันทึกและ swapfile สามารถช่วยได้
jamessan

@ alpha_989 พวกเขาเสริม swapfile ช่วยให้คุณสามารถกู้คืนการเปลี่ยนแปลงที่ไม่ได้บันทึก ไฟล์ถาวร - เลิกทำช่วยให้คุณสามารถย้อนกลับประวัติการเลิกทำในเซสชัน Vim ได้ แต่ไฟล์นั้นจะถูกเขียนเมื่อคุณบันทึกเท่านั้น
jamessan

วิธีการตั้งค่าเป็นกลุ่มไม่มีการแลกเปลี่ยนสำหรับหนึ่งอินสแตนซ์เท่านั้น? เช่นvim temp.txt --some-command-that-disable-swap? กรณีการใช้งานของฉันคือผู้เฝ้าดูบางคนจะคอยเฝ้าดูการเปลี่ยนแปลงใด ๆ ในไดเรกทอรีดังนั้นเมื่อถึงตอนนั้นฉันจะต้องปิดการใช้งาน swap เพื่อป้องกันการชนกัน
Ng Sek Long
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.