Việc sử dụng ctrl + c thay vì esc để thoát chế độ chèn sẽ phá vỡ mọi thứ trong vi?


15

Khi sử dụng vi, bạn có thể thoát chế độ chèn bằng Ctrl+ Cthay vì truyền thống hơn Esc. Có bất kỳ tình huống mà nó sẽ là không mong muốn để sử dụng cho trước thay vì sau này? Nó có phá vỡ bất cứ điều gì khác hơn là thực hành tốt nhất?


Việc vô tình đánh trúng người cũ là điều không mong muốn, điều này khiến bạn gặp lỗi Type :quit<Enter> to exit Vimvà khiến tôi phải tìm lại Google. Đánh trúng isẽ đưa bạn trở lại chế độ chèn.
Noumenon

Câu trả lời:


9

Ctrl-CEsckhông giống nhau trong vi/ vimtrong 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 EscCtrl-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).


Rất tốt để biết, nhưng câu hỏi của tôi là về việc thoát khỏi chế độ chèn.
MDMarra

@MDMarra Doh, đọc sai câu hỏi của bạn. Chế độ chèn vẫn khác: xem câu trả lời cập nhật.
jw013

1
Đây là điểm khác biệt quan trọng nhất mà tôi phải đối phó: chèn nhiều dòng với chế độ khối trực quan hoạt động với Esc chứ không phải với Cc.
enfascination

4

Tôi nghĩ bạn có nghĩa là vimkhô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 vitrê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ạ .


3
Bạn có thể chỉ ra bất kỳ vitriển khai nào còn tồn tại đến ngày nay không xử lý Ctrl-Ckhông? Xem câu trả lời của tôi cho sự khác biệt thực sự.
jw013

2

Nếu bạn đang đề cập đến vim, có một sự khác biệt nhỏ. CTRL-Ckhông kiểm tra các chữ viết tắt và nó không kích hoạt InsertLeavesự kiện. Vì vậy, bạn hoặc plugin đã xác định bất kỳ autocmdcâ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-Ctới <esc>, sau đó nó sẽ kích hoạt InsertLeave.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.