Vim là một trình soạn thảo văn bản tuyệt vời cho các hệ thống unix, nhưng nó nổi tiếng là khó thoát.
Viết một chương trình đầy đủ sẽ xuất ra :q
để thoát Vim. Sau đó, nó sẽ đọc một dòng đầu vào, vì sau đó nó sẽ được cung cấp một dấu nhắc bash, trong trường hợp đó lối ra thành công hoặc lỗi, trong trường hợp đó có những thay đổi chưa được lưu.
Dấu nhắc bash sẽ là:
E37@vimmachine: /var/override)
Trong khi lỗi sẽ là:
E37: No write since last change (add ! to override)
Khi được đưa ra dấu nhắc bash, công việc của chương trình được thực hiện và nó sẽ không cung cấp thêm bất kỳ đầu ra nào (ngoại trừ khoảng trắng).
Khi bị lỗi, chương trình của bạn sẽ ngẫu nhiên (tức là mỗi khả năng có xác suất được chọn bằng không) :q!
, để thoát mà không lưu, hoặc :x
, để lưu và thoát.
Đây là môn đánh gôn để có ít byte nhất trong mỗi ngôn ngữ !
E37: No write since last change
? Đó là, làm thế nào một thuật toán có thể phân biệt một dấu nhắc với một thông báo lỗi?
E37@vimmachine: /var/override)
:x
để thoát vim. Một ngày nào đó bạn sẽ vô tình nhấn :X
phím ngẫu nhiên khi bạn bối rối. Sau khi bạn cuối cùng :wq
bạn sẽ không bao giờ nhìn thấy tập tin của bạn nữa.
:x
là một điều! Tôi đã luôn sử dụng:wq
:)