Vim - độ trễ khi thoát khỏi chế độ hình ảnh


8

Nếu tôi nhấn ESC để thoát Chế độ trực quan sau khi tôi chọn một số văn bản, sẽ có độ trễ đáng chú ý trước khi văn bản không được chọn và tôi trở về Chế độ bình thường (ngay cả khi tôi chỉ chọn 1-2 ký tự). Có thể tránh sự chậm trễ này?

vim  delay 

Câu trả lời:


2

Điều này có thể được gây ra bởi việc được ánh xạ tới một số chức năng bổ sung. Ví dụ: tôi sử dụng plugin tabbar và nó ánh xạ 0-9 để chuyển sang bộ đệm số. Bất cứ khi nào một phím được ánh xạ tới chức năng bổ sung như thế này, vim sẽ đợi vài giây sau khi nhấn để xem bạn có nhấn bất kỳ phím bổ sung nào không.

Để xem nếu có bất kỳ ánh xạ bổ sung nào, hãy chạy :mapvà tìm kiếm <Esc>trong cột đầu tiên. Khi chạy mà không có bất kỳ tham số nào, :mapsẽ liệt kê tất cả các ánh xạ tùy chỉnh. Nếu bạn chỉ muốn liệt kê các ánh xạ trong khi ở chế độ trực quan, hãy chạy :vmap.

Nếu không có ánh xạ bổ sung, tôi không biết cách nào để xóa tạm dừng, ngoài việc xóa ánh xạ. Việc tạm dừng là cần thiết để vim rõ ràng biết hành động mà bạn dự định thực hiện.


1
Trong các thiết bị đầu cuối giống như VT100 (bao gồm Xterm / Rxvt / PuTTY / Gnome Terminal), Esccũng là tiền tố cho tất cả các phím đặc biệt, bao gồm cả các phím mũi tên.
dùng1686

@grawity: Đúng, nhưng Vim sử dụng các giá trị hết thời gian chờ khác nhau cho các chuỗi thoát đó so với ánh xạ, do đó việc xử lý các chuỗi thoát đó thường không gây ra sự cố được báo cáo ở đây. Xem :help 'timeout'.
garyjohn

Cảm ơn, đó là nó. Bây giờ tôi chỉ phải tìm những ánh xạ nào đang cản trở việc sử dụng của tôi.

0

Tôi không có ánh xạ nào bị ràng buộc với <ESC> trên toàn cầu hoặc cho chế độ Trực quan (gọi: verbose vmap <ESC> không cho kết quả) nhưng vẫn có độ trễ đáng kể khi thoát khỏi chế độ Visual. Ngay cả trên các bản cài đặt mới không có vimrc, vẫn có độ trễ. Sử dụng <Cc> sẽ thoát chế độ trực quan mà không bị trễ.

Vì tôi không thích nhấn <Cc> để thoát bất kỳ chế độ nào, tôi hiện ánh xạ <ESC> sang <Cc> ở chế độ trực quan. Điều này thoát khỏi chế độ trực quan bằng cách sử dụng <ESC> mà không có bất kỳ độ trễ nào.

:vmap <ESC> <C-c>

Hoặc đặt dòng sau vào vimrc của bạn

vnoremap <ESC> <C-c>

Điều này sẽ không hoạt động nếu bạn có ánh xạ chế độ toàn cầu hoặc trực quan ràng buộc với <ESC>.


-2

Những gì bạn có thể làm vẫn là sử dụng CTRL+ Cđể thoát chế độ Visual, Điều đó sẽ tránh sự chậm trễ.

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.