มี vim plugin ที่ใช้คุณสมบัติ hot exit จากข้อความประเสริฐ


11

Hot exit เป็นหนึ่งในคุณสมบัตินักฆ่าของ Sublime Text editor อนุญาตให้ปิดโปรแกรมแก้ไขเมื่อใดก็ได้โดยไม่ต้องกังวลเกี่ยวกับการแก้ไขไฟล์ที่เปิด - เพียงแค่ปิดโดยไม่มีคำถามใด ๆ เมื่อเรียกใช้ ST อีกครั้งไฟล์ที่เปิดและแก้ไขทั้งหมดจะอยู่ในสถานะเดิมเหมือนก่อนปิด

ฉันสงสัยว่ามีวิธีการทำเช่นเดียวกันในกลุ่ม?


: xa ออกจากทั้งหมด (บันทึกการเปลี่ยนแปลงทั้งหมดและปิด Vim)
Sim

สิ่งนี้เขียนไฟล์ แต่ไม่ได้บันทึกสิ่งอื่นใด ฉันคิดว่า OP ต้องการบางสิ่งที่ทั้งสองบันทึกไฟล์โดยไม่ต้องเขียนและบันทึกสถานะของแท็บหรือบัฟเฟอร์ที่เปิดอยู่
EvergreenTree

ใช่ฉันเข้าใจว่าภายหลังจากความคิดเห็นของเขา
Sim

คำตอบ:


6

เป็นกลุ่มสามารถทำเช่นนี้แม้ว่ามันอาจจะ clunky บิตและใช้การตั้งค่าบางอย่าง

romainlsessionทำให้คุณได้รับครึ่งด้วย บิตที่ขาดหายไปเป็นไฟล์แลกเปลี่ยน:preserveและธง&cpoptions

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

นั่นคือสิ่งที่:preserveและcpoptions's &มาใน. :preserveกองกำลังที่เป็นกลุ่มที่จะเขียนบัฟเฟอร์ทั้งหมดไปยังไฟล์แลกเปลี่ยนทันที (เมื่อเทียบกับมาตรฐานหลังจาก 4 วินาทีหรือ 200 ตัวอักษรหรือสิ่งที่ตัวเลือกของคุณได้ตั้งค่าให้) การทำ:set cpoptions+=&จะบอกเป็นกลุ่มว่าจะไม่ลบไฟล์สลับที่บันทึกด้วย:preserveเมื่อออกจากปกติ

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

.foo.txt.swn
.foo.txt.swo
.foo.txt.swp
foo.txt

คุณสามารถลบไฟล์เก่าได้ด้วยตนเอง แต่ Vim จะเสนอให้กู้คืนโดยอัตโนมัติหากมี*.swpไฟล์ที่จะใส่ไฟล์ swap ใหม่ :recoverคำสั่งจะบังคับให้เป็นกลุ่มที่จะมองหาการแลกเปลี่ยนไฟล์ที่จะกู้คืนจาก

ด้วยการใช้คำสั่งอัตโนมัติคุณสามารถทำการรักษาโดยอัตโนมัติ (อาจเป็นกับQuitPreเหตุการณ์) และการกู้คืน (อาจมีBufReadหรือBufReadPost) Recover.vimเป็นปลั๊กอินที่อาจทำงานเป็นทางเลือกที่เป็นมิตรสำหรับการจัดการการกู้คืน ดูเหมือนว่าจะจัดการล้างไฟล์ swap ด้วย ฉันไม่แน่ใจว่ามันจะจัดการกับไดเรกทอรีที่มี.swoแต่ไม่มี.swpไฟล์ได้อย่างไร คุณอาจต้องใช้:recoverสำหรับกรณีดังกล่าว

vim-obsessionเป็นปลั๊กอินที่อ้างว่าทำให้การจัดการเซสชันง่ายขึ้นมาก


1

ใช่. มันเรียกว่า "เซสชั่น" และคุณสามารถอ่านได้ทั้งหมดใน:

:help session

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

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