Это случается не так часто, как вы думаете, но иногда бывает, и у меня даже нет кошки.
По сути, если вы набираете номерную строку или числовую цифру, а затем случайно нажимаете комбинацию клавиш, которая запускает повторяющуюся команду, можно непреднамеренно дать команду Vim выполнить задачу несколько тысяч, миллионов или даже миллиардов раз. Это легко выходит из-под контроля и может привести к потере данных.
Поэтому мне интересно, есть ли конфигурация или что-то в исходном коде, которое мы можем изменить, чтобы оно служило проверкой работоспособности для предотвращения такого рода DoS.
normal-mode
repeated-commands
Стивен Лу
источник
источник
144477@@
или,99999.
и хотите остановить выполнение, если число слишком велико? Я прав? (Я должен спросить, потому что это кажется немного странным, у меня никогда не было этой проблемы)set showcmd
для отображения клавиш, которые вы ввели в правом нижнем углу..vimrc
, чтобы ответ был полностью автономным.)Ответы:
Я считаю, что вы обычно можете прервать процесс повторения, отправив SIGINT ( Ctrl+C). До тех пор, пока в некоторых vimscript не выполняется действительно длинный внутренний цикл, проблем с DoS нет.
Смотрите здесь пример того, как плагин может содержать функцию, которая зацикливается в зависимости от введенного числа.
Практически для всех целей и задач этот вопрос является гипотетическим.
источник
<Esc>
, вам не нужно использовать<C-c>
. Разница в том, что<C-c>
прерывает все, что делает Vim (например, запускает функцию), а<Esc>
не делает. Вы почти никогда не захотите использовать,<C-c>
если не хотите «убить» что-то.