Làm thế nào tôi có thể ngăn chặn (hoặc ít nhất là nhắc nhở để xác nhận) số lượng lớn vô lý được sử dụng cho các lệnh tiền tố?


9

Nó không xảy ra thường xuyên như bạn nghĩ, nhưng đôi khi nó xảy ra và tôi thậm chí không sở hữu một con mèo.

Về cơ bản, nếu bạn trộn hàng số hoặc numpad và sau đó tình cờ nhấn một keycombo kích hoạt lệnh lặp lại, có thể vô tình ra lệnh cho Vim thực hiện một nhiệm vụ vài nghìn, triệu hoặc thậm chí hàng tỷ lần. Điều này dễ dàng vượt khỏi tầm kiểm soát và có thể dẫn đến mất dữ liệu.

Vì vậy, tôi tự hỏi nếu có một cấu hình hoặc một cái gì đó trong mã nguồn, chúng ta có thể thay đổi để phục vụ như một kiểm tra độ tỉnh táo để ngăn chặn loại DoS này.


4
Chỉ cần chắc chắn rằng tôi hiểu câu hỏi của bạn: bạn thường xuyên gõ nhầm một số trình tự như 144477@@hoặc 99999.và bạn muốn dừng các thực thi đó khi số quá lớn? Tôi có đúng không (Tôi phải hỏi vì điều đó có vẻ hơi kỳ lạ với tôi, tôi chưa bao giờ gặp vấn đề này)
statox

3
Tại sao không chú ý đến những gì bạn làm?
romainl

3
@statox vâng, đúng vậy. romainl cũng có một điểm hợp lệ, nhưng có vẻ như không liên quan đến câu hỏi. Câu hỏi vẫn còn, và nó có thể không "nghiêm trọng" như các câu hỏi khác, nhưng dù sao cũng là một câu hỏi. Tôi chỉ đơn giản nghĩ rằng nó có ý nghĩa để có thể chỉ định một giới hạn trên về điều này để ngăn chặn sự từ chối dịch vụ tình cờ. Đối với gợi ý về việc không phát triển, vâng, điều đó có thể có liên quan nếu điều này cũng tràn vào bộ đệm, tôi cũng đã không xem xét nó. (Một ví dụ không quá dễ hiểu - Tôi có bàn phím 60%, hàng viền trên cùng là số. Tôi cầm nó bằng tay. Quên rút phích cắm ra, v.v.)
Steven Lu

4
Bạn có thể sử dụng set showcmdđể hiển thị các phím bạn đã nhập ở góc dưới bên phải.
Martin Tournoij

1
@Carpetsmoker Tôi nghĩ rằng nó sẽ đủ điều kiện là "lời nhắc xác nhận" vì nó hiển thị trên màn hình. Tôi khuyên bạn nên thêm nó dưới dạng câu trả lời (có thể cùng với cách thêm nó làm tùy chọn mặc định .vimrc, vì vậy câu trả lời hoàn toàn khép kín.)
Wildcard

Câu trả lời:


2

Tôi thấy rằng bạn thường có thể làm gián đoạn quá trình lặp lại bằng cách gửi SIGINT ( Ctrl+C). Miễn là một số vimscript không chạy một vòng lặp bên trong thực sự dài, không có mối quan tâm DoS.

Xem ở đây để biết ví dụ về một plugin có thể chứa một hàm lặp tùy thuộc vào số đã nhập.

Đối với hầu hết tất cả ý định và mục đích, vấn đề này ở đây là một giả thuyết.


4
"Vấn đề này là một vấn đề giả định" ... Không, không phải vậy. Tôi đã phải làm việc trên SSH trên điện thoại của mình qua các kết nối 2G, trong đó tôi đã vô tình bỏ lỡ một lần nhấn phím hoặc thực hiện nhiều lần nhấn phím trong khi gõ dự đoán, dẫn đến tình huống rất giống nhau (có thể không phải là 99999, nhưng số nhỏ hơn có).
muru

Thật tuyệt, vâng, một trình giả lập thiết bị đầu cuối chậm (tùy thuộc vào lượng thay đổi mà vim đang áp dụng) có thể làm trầm trọng thêm các vấn đề bằng cách thêm độ trễ xử lý ở phía máy khách. Phải nhanh chóng truy cập Ctrl + C!
Steven Lu

1
Bạn chỉ có thể sử dụng <Esc>, bạn không cần sử dụng <C-c>. Sự khác biệt là <C-c>hủy bỏ bất cứ điều gì Vim đang làm (chẳng hạn như chạy một chức năng), và <Esc>không. Bạn gần như không bao giờ muốn sử dụng <C-c>trừ khi bạn muốn "giết" thứ gì đó.
Martin Tournoij
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.