Tăng tốc độ trên <Esc> O (Chèn vào Bình thường để Chèn dòng mới phía trên con trỏ)


16

Thông thường khi tôi ở chế độ Chèn, tôi sẽ nhấn Escđể vào chế độ Bình thường và sau đó nhấn ngay Ođể bắt đầu một dòng mới phía trên con trỏ và chuyển sang chế độ Chèn ở đó.

Nhưng khi tôi làm điều đó, có độ trễ 1 giây sau khi tôi nhấn Otrước khi có bất kỳ phản hồi rõ ràng nào. Hơn nữa, nếu tôi bắt đầu gõ văn bản mới trong thời gian đó chậm trễ 1 giây, nếu văn bản mới bắt đầu với bất kỳ một tập hợp các ký tự (ví dụ j, k, m, n, o), tôi kết thúc ở giữa của một số hoạt động khác mà tôi không có ý định, thường làm cho một mớ hỗn độn, tại thời điểm đó tôi phải dừng lại và dò dẫm xung quanh với undos và redos cho đến khi tôi chắc chắn rằng tôi đã hoàn tác được thiệt hại.

Để tránh sự khó chịu đó, tôi đã có thói quen tạm dừng một giây sau mỗi lần tôi gõ O. Nhưng điều này làm tôi chậm lại và ngăn tôi trở thành con quỷ tốc độ vim mà tôi sẽ trở thành.

Điều gì gây ra điều này? Có một sửa chữa hoặc giải pháp?

Câu trả lời:


15

Điều này chỉ xảy ra trong thiết bị đầu cuối, nhưng không phải trong GVIM, phải không? Lý do là Vim không thể phân biệt giữa các phím loại cá nhân và một chuỗi thoát ANSI bắt đầu với các phím tương tự (ví dụ ^[O..., <Esc>sau đó là Otrong trường hợp của bạn).

Bạn có thể đọc về tất cả các phức tạp cơ bản tại :help 'timeout'(và các tùy chọn sau). Ở đó bạn cũng tìm thấy một cấu hình được đề xuất làm giảm bớt vấn đề:

:set timeout timeoutlen=1000 ttimeoutlen=100

3
Bạn cũng có thể sử dụng set noesckeys; điều này có tác dụng phụ là vô hiệu hóa các phím mũi tên (và có lẽ một số phím khác?) trong chế độ Chèn, vì vậy nó có thể không dành cho tất cả mọi người.
Martin Tournoij

2
@Carpetsmoker Về "set noesckeys" ... hoạt động, nhưng chỉ khi ở chế độ Chèn. Tôi biết tôi đã nói rằng tôi đang ở chế độ Chèn để bắt đầu; tuy nhiên tôi cũng thường làm <Esc> O bắt đầu từ chế độ Bình thường (chủ yếu là khi tôi không chắc chắn 100% là tôi bắt đầu ở chế độ Chèn hay Bình thường) vì vậy tôi cũng muốn một cái gì đó hoạt động trong trường hợp đó.
Don nở

1
@DonHatch Bạn có thể sử dụng :nnoremap ^[O O, ^[nhập vào đâu bằng cách nhấn <C-v><Esc>(cũng có thể hiển thị dưới dạng <1b>).
Martin Tournoij

5

Thay vào đó ESCO, hãy sử dụng Control+ OO. Các Control+ Oputs bạn trong chế độ bình thường đối với một lệnh, sau đó trả về bạn sang chế độ chèn khi nó được thực hiện.


1

Làm thế nào về:

Control+C O

Có một số sự tinh tế khi sử dụng Control+ Cbạn nên chú ý.

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.