Câu trả lời:
Ctrl-Cvà Esckhông giống nhau trong vi
/ vim
trong hầu hết các chế độ, bao gồm cả chế độ chèn. Sự khác biệt là Esckích hoạt viết tắt trong khi Ctrl-ckhông. Việc này có quan trọng với bạn hay không phụ thuộc vào việc bạn hoặc bất kỳ plugin nào bạn sử dụng có sử dụng chữ viết tắt hay không.
Lưu ý rằng nó là an toàn hơn để đảm nhận Escvà Ctrl-Clàm không có nghĩa là điều tương tự trong vim
. Một ví dụ khác từ cùng trang này là khi thoát khỏi chế độ chèn khối (không vào vi
).
Tôi nghĩ bạn có nghĩa là vim
không vi
.
Điều này thực sự hoạt động vim
, mặc dù tôi sẽ không sử dụng nó trừ khi tôi chắc chắn 100% rằng tôi sẽ không bao giờ chạm vào hệ điều hành không phải là Linux. Lý do là các hệ điều hành khác có thể có các triển khai riêng vi
, không thực hiện điều này và bạn có thể thấy rằng khi chạy vi
trên các nền tảng đó, Ctrl-C có hành vi truyền thống của riêng mình: làm gián đoạn quá trình và để thiết bị đầu cuối của bạn ở trạng thái kỳ lạ .
vi
triển khai nào còn tồn tại đến ngày nay không xử lý Ctrl-C
không? Xem câu trả lời của tôi cho sự khác biệt thực sự.
Nếu bạn đang đề cập đến vim
, có một sự khác biệt nhỏ. CTRL-C
không kiểm tra các chữ viết tắt và nó không kích hoạt InsertLeave
sự kiện. Vì vậy, bạn hoặc plugin đã xác định bất kỳ autocmd
câu lệnh nào phụ thuộc vào InsertLeave
, chúng sẽ không được kích hoạt.
Từ tài liệu chính thức http://vimhelp.appspot.com/insert.txt.html :
<Esc> or CTRL-[ End insert or Replace mode, go back to Normal mode. Finish
abbreviation.
CTRL-C Quit insert mode, go back to Normal mode. Do not check for
abbreviations. Does not trigger the InsertLeave autocommand
event.
Bạn có thể xác định một ánh xạ cho CTRL-C
tới <esc>
, sau đó nó sẽ kích hoạt InsertLeave
.
Type :quit<Enter> to exit Vim
và khiến tôi phải tìm lại Google. Đánh trúngi
sẽ đưa bạn trở lại chế độ chèn.