Như akshay đã chỉ ra, tài liệu của Vim giải thích, điều đó :x
và ZZ
tương đương và chỉ lưu một tệp nếu bộ đệm liên quan đã bị thay đổi. Trong khi đó :wq
lưu bộ đệm vào tệp tương ứng, ngay cả khi nó không thay đổi.
Trong cả hai trường hợp, nội dung của bộ đệm sẽ được lưu vào đĩa. Rõ ràng kết quả là như nhau, vậy tại sao phải bận tâm, phải không? Nhưng chờ đã ... Có một sự khác biệt tinh tế, nhưng không liên quan.
Nếu bạn thoát Vim qua :x
và không có thay đổi đối với bộ đệm, sẽ không có thay đổi về thời gian sửa đổi của tệp đó. Mặt khác, nếu bạn thoát qua :wq
, thời gian sửa đổi sẽ thay đổi, vì tệp được viết lại về mặt kỹ thuật (được lưu lại).
Điều này có thể có một số tác động trong các tình huống nhất định. Ví dụ, quy trình sao lưu phụ thuộc vào thời gian sửa đổi, có thể lưu trữ tệp này (và có khả năng gửi nó qua mạng) ngay cả khi không có thông tin bổ sung nào được đưa vào. Hoặc một số quy trình giám sát có thể rung chuông báo động nếu phát hiện (đối với nó) tệp đã bị thay đổi ...
Chỉnh sửa: Tôi quên đề cập, để rời khỏi bộ đệm / tệp đã sửa đổi mà không thay đổi thời gian sửa đổi, một :q
(không có w
) cũng sẽ hoạt động.