Tại sao vim trì hoãn trong một giây bất cứ khi nào tôi sử dụng lệnh 'O' (mở một dòng mới ở trên và chèn)?


26

Khi tôi sử dụng hầu hết các lệnh, chúng có hiệu lực ngay lập tức. OTuy nhiên, khi tôi sử dụng lệnh, tôi thấy "O" thay thế ký tự hiện tại trong khoảng một giây, sau đó ký tự hiện tại trở lại và một dòng mới được chèn và mở.

Tôi không có vấn đề như vậy với olệnh (mở một dòng mới bên dưới và chèn).

Nếu nó tạo ra sự khác biệt, tôi đang sử dụng vimtừ bash, trong Gnome Terminal trên Ubuntu 10.04.

Câu trả lời:


27

Nếu phím trước được nhấn là ESC, điều này là do có các phím có thể tạo chuỗi thoát bắt đầu bằng ESC O. Ví dụ, tùy thuộc vào chế độ phím con trỏ, phím mũi tên lên có thể tạo chuỗi thoát ESC O A.

Nếu nó thấy một chuỗi thoát một phần, vim sẽ đợi trong một khoảng thời gian ngắn để xem nếu một ký tự khác được nhận phù hợp với một trong các chuỗi thoát được xác định cho loại thiết bị đầu cuối của bạn. Nếu không nó sẽ coi các ký tự là tổ hợp phím riêng biệt. Bạn có thể kiểm tra điều này bằng cách nhập thủ đô A trong khi chờ đợi dòng mở để xem liệu nó có coi nó như một mũi tên lên thay thế hay không.

Có một số cài đặt vim có thể được sử dụng để kiểm soát điều này. :set ttimeoutlen=100sẽ thay đổi thời gian chờ chuỗi thoát thành 100ms. :set noesckeyssẽ vô hiệu hóa hoàn toàn nhận dạng các phím gửi một chuỗi thoát khi ở chế độ chèn. Ngoài ra, chế độ tương thích vi sẽ không gặp phải vấn đề này vì các khóa được tắt trong chế độ đó - đó là lý do tại sao vim -u NONEhoạt động.


Chỉ cần làm rõ, "thử nghiệm" của tôi với tệp dòng 140k ở chế độ vim đầy đủ với phần bổ sung tiêu chuẩn của trình cắm và tệp. Tôi có thể thấy nơi bạn có thể đã kết luận rằng tôi đã sử dụng -u NONEnhưng chúng tôi vẫn thiếu xác nhận từ OP.
msw

ồ điều đó hơi khó chịu trong một thời gian nhưng tôi chưa bao giờ nghĩ về nó. làm cho ý nghĩa hoàn hảo bây giờ. Esc OA thực sự hoạt động giống như mũi tên lên.
Vitaly Kushner

2
:set noesckeyscó thể không phải là những gì bạn muốn - đặt nó và sau đó nhấn các phím mũi tên ở chế độ chèn, ngay cả khi bạn không có kế hoạch sử dụng chúng, bạn không muốn chúng làm điều đó! noesckeys cũng không tăng tốc mọi thứ bên ngoài chế độ chèn. ttimeoutlenchắc chắn là con đường để đi
JonnyRaa
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.