Trì hoãn trước khi 'O' mở một dòng mới?


82

Tôi nhận thấy rằng, thỉnh thoảng, khi tôi sử dụng O(viết hoa 'o') để tạo một dòng mới và chuyển sang chế độ chèn, có một khoảng thời gian ngắn trước khi bất kỳ điều gì xảy ra.

Điều này có phổ biến không? Có cách nào để thay đổi nó không?

Cả hai :map O:imap Ohiển thị "Không có ánh xạ tìm thấy", vì vậy tôi không nghĩ rằng đó là một bản đồ kỳ lạ.


Đồng ý về superuser.com: có lẽ điều này là do cú pháp tô sáng tính toán lại định dạng?
monojohnny

4
Xin đừng sử dụng thẻ như "thuộc-on-superuser" Thẻ không được dự định như một phương tiện để bạn có thể bày tỏ ý kiến của bạn - xem meta.stackexchange.com/questions/36819/... . Nếu bạn nghĩ nó thuộc về SU, hãy bỏ phiếu để chuyển nó đến đó.

Tôi đã được sửa chữa. Tôi sẽ không sử dụng những thẻ đó nữa. Tôi vẫn nghĩ câu hỏi rất hay này là dạng câu hỏi thuộc về SU và hy vọng sẽ tìm thấy nó ở đó.
jjclarkson

Yea, xin lỗi - bạn nói đúng. Điều này nên được trên SU. Có nút nào nhanh chóng và dễ dàng mà tôi có thể sử dụng để di chuyển nó không (và câu trả lời?)
David Wolever

Câu trả lời:


91

Đó là vì 'esckeys'tùy chọn được bật (một hệ quả của nocompatiblenhư tôi vừa khám phá). Khi bạn nhấn ^[O, có một độ trễ nhỏ khi nó tìm ra liệu bạn đang sử dụng một phím mũi tên / phím chức năng hoặc nếu bạn chỉ muốn hai phím đó theo thứ tự.

Một giải pháp là tắt tùy chọn đó và từ bỏ các phím mũi tên trong chế độ chèn.
Một cách khác là đặt ở 'timeoutlen'mức nhỏ hơn 1000, có thể là 100 (nhưng hãy cẩn thận với các kết nối chậm).
Cách khác là sử dụng ^Cthay vì ^[rời khỏi chế độ chèn.


Hay quá cảm ơn! Ngoài ra, đối với bất kỳ ai khác có thể đang đọc nội dung này: trước khi tắt, hãy kiểm tra trang trợ giúp 'esckeys'- đó là trang cho phép bạn sử dụng, ví dụ: các phím mũi tên trong chế độ chèn. Cài đặt 'timeoutlen'hoạt động hiệu quả đối với tôi.
David Wolever

3
Cũng ttimeoutlencó thể đặt thời gian chờ chỉ cho các mã khóa. Xem vim của:help ttimeoutlen
k107

1
Tôi vẫn có sự chậm trễ ngay cả sau khi :set noesckeyshoặc :set timeout timeoutlen=1000 ttimeoutlen=100... Bất kỳ ý tưởng? (Cygwin, VIM tổng hợp từ nguồn)
Yichuan Wang

1
Làm việc tốt cho tôi với: đặt timeout timeoutlen = 3000 ttimeoutlen = 100 (theo lời khuyên trong phần trợ giúp vim). Chỉ đơn thuần đặt timeoutlen thành một giá trị nhỏ là một ý tưởng tồi - một số ánh xạ đã ngừng hoạt động.
jkff

Tôi không hiểu. Khi 'esckeys'được bật, tại sao tôi không thể nhập trình tự <esc>[Aở chế độ chèn để di chuyển con trỏ lên?
Qian,

3

Nó xảy ra nếu bạn nhấn "O" ngay sau phím Escape, phải không? Tôi luôn cho rằng đó là bởi vì người lái xe đầu cuối đang đợi một chút để xem liệu bạn có hoàn thành chuỗi thoát hay không.


0

Tôi nghi ngờ đó là khi bạn phải ghi swapfile vào đĩa. Đảm bảo rằng bạn đang chạy vim trên máy tính có khả năng truy cập đĩa nhanh; nếu bạn phải sử dụng hệ thống tệp chia sẻ, bạn có thể thử di chuyển tệp hoán đổi bằng cách sử dụng

:set directory=/path/to/local/dir

Tôi thứ hai điều này - tại nơi làm việc các thư mục tại nhà của chúng tôi được gắn với NFS, và tôi thấy loại chậm trễ này rất nhiều.
Cascabel

... tất nhiên, nếu nó chỉ dành cho O chứ không phải o, thì đó chắc chắn là thứ trong chuỗi phím thoát, như jleedev nói!
Cascabel

1
Chà, mặc dù câu trả lời này không trực tiếp đề cập đến OP, tôi cảm thấy nó vẫn có liên quan. Không thể đồng ý với người đã bỏ phiếu từ chối.
Jeffrey Jose

Không phải là câu trả lời cho vấn đề của OP, mà là một lý thuyết hay và giải thích có tính hướng dẫn. Cảm ơn!
superacuo
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.