Nie zdarza się tak często, jak się wydaje, ale zdarza się czasami, a ja nawet nie mam kota.
Zasadniczo, jeśli zacierasz wiersz liczb lub klawisze numeryczne, a następnie trafisz na keycombo, które uruchamia powtarzalne polecenie, możliwe jest niezamierzone polecenie Vimowi wykonania zadania kilka tysięcy, milionów, a nawet miliardów razy. To łatwo wymyka się spod kontroli i może spowodować utratę danych.
Zastanawiam się więc, czy w kodzie źródłowym jest jakaś konfiguracja, czy coś, co możemy zmienić, aby służyło jako kontrola poprawności, aby zapobiec tego rodzaju DoS.
normal-mode
repeated-commands
Steven Lu
źródło
źródło
144477@@
lub99999.
i chcesz zatrzymać te egzekucje, gdy liczba jest zbyt duża? Czy mam rację? (Muszę zapytać, ponieważ wydaje mi się to trochę dziwne, nigdy nie miałem tego problemu)set showcmd
aby wyświetlić klawisze wpisane w prawym dolnym rogu..vimrc
, więc odpowiedź jest w pełni samowystarczalna.)Odpowiedzi:
Uważam, że zwykle możesz przerwać proces powtarzania, wysyłając SIGINT ( Ctrl+C). Tak długo, jak jakiś vimscript nie ma naprawdę długiej pętli wewnętrznej, nie ma obaw przed DoS.
Zobacz tutaj przykład wtyczki, która może zawierać funkcję, która zapętla się w zależności od wprowadzonego numeru.
Dla prawie wszystkich intencji i celów ta kwestia jest tutaj hipotetyczna.
źródło
<Esc>
, nie musisz używać<C-c>
. Różnica polega na tym, że<C-c>
przerywa wszystko, co robi Vim (np. Uruchamianie funkcji), a<Esc>
nie robi tego. Prawie nigdy nie chcesz używać,<C-c>
chyba że chcesz coś „zabić”.