อะไรคือความแตกต่างระหว่าง: wq <cr>: x <cr> และ ZZ เมื่อออกเป็นกลุ่ม?


38

Vi และ Vim ทุกคนรู้มีคำพ้องความหมายมากมาย มีสามวิธีที่ฉันรู้ในการบันทึกไฟล์และออกจาก Vim และ Vi เหล่านี้คือ: WQ <CR> , : x <CR>และZZ ฉันเคยได้ยินว่าสิ่งเหล่านี้มีความแตกต่างในบางวิธี

มีความแตกต่างในทางปฏิบัติระหว่างการใช้:

:x<cr>

:wq<cr>

หรือ

ZZ

จะบันทึกไฟล์และออกจาก Vim และ Vi ได้อย่างไร


คำตอบง่ายๆคือพวกมันเหมือนกัน
JJoao

2
พวกเขาไม่เหมือนกัน ฉันไม่ทราบความแตกต่างอย่างแน่นอน แต่เป็นสิ่งที่เกี่ยวกับการเขียนและไม่ได้เขียนลงในไฟล์หากไม่มีการเปลี่ยนแปลงใด ๆ (เช่นการอัปเดตการประทับเวลา)
Wildcard

1
นอกจากนี้จากมุมมองที่ใช้งานได้จริงZZ (หรือZQ) สั้นกว่าและง่ายกว่าในการพิมพ์ ...
VanLaser

:help :wq, ,:help ZZ :help :xมันอยู่ที่นั่นในเอกสาร
แอนโทนี

คำตอบ:


40

จากเอกสารของ Vim :xและZZเทียบเท่า พวกเขาบันทึกไฟล์เท่านั้นหากมีการแก้ไขแล้วออกจากกลุ่ม:

Write current file, if modified, and quit (same as ":x").  
(Note: If there are several windows for the
current file, the file is written if it was modified and the window is closed).

:wq ในทางกลับกันเขียนไฟล์และออกเป็นกลุ่ม (สมมติว่ามีสิทธิ์ที่เหมาะสม)


9

ดังที่ akshay ชี้ให้เห็นเอกสารของ Vim อธิบายว่า:xและZZเทียบเท่าและบันทึกเฉพาะไฟล์หากบัฟเฟอร์ที่เกี่ยวข้องมีการเปลี่ยนแปลง ในขณะที่:wqบันทึกบัฟเฟอร์ไปยังไฟล์ที่เกี่ยวข้องแม้ว่าจะไม่เปลี่ยนแปลง

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

หากคุณออกจากกลุ่มผ่านทาง:xและไม่มีการเปลี่ยนแปลงกับบัฟเฟอร์จะไม่มีการเปลี่ยนแปลงเวลาแก้ไขของไฟล์นั้น ในทางกลับกันถ้าคุณออกจากผ่าน:wqเวลาแก้ไขจะเปลี่ยนแปลงตามที่ไฟล์ถูกเขียนใหม่ทางเทคนิค (บันทึกอีกครั้ง)

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

แก้ไข: ฉันลืมพูดถึงเพื่อที่จะออกจากบัฟเฟอร์ / ไฟล์ที่แก้ไขโดยไม่เปลี่ยนเวลาแก้ไข a :q(โดยไม่มีw) จะทำงานเช่นกัน


2
นอกจากนี้คำสั่งอัตโนมัติบางอย่างจะทำงานเฉพาะเมื่อเขียนไฟล์ พวกเขาจะไม่ทำงานหากไฟล์ไม่เปลี่ยนแปลงและ Vim ถูกเลิกใช้ด้วย ZZ หรือ: x
Spidey
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.