Подтвердить что ты не робот

Макрос Vim очень медленный

Я сохраняю очень простой макрос vim для ключа: qa $pjq, а затем выполняю его 40000 раз с 40000 @a. Это очень медленно. Я должен делать что-то неправильно, потому что, хотя он работает, требуется примерно 60-90 секунд. Это так быстро, как vim? Есть ли какие-то настройки, которые могут ускорить это? Есть ли смесь плагинов, которые замедляют выполнение макросов?

Я использую Mac и использую MacVim. Это простой текстовый файл, он действительно не упрощается.

4b9b3361

Ответ 1

Не требуется много времени для вставки 40 000 строк, но если вы постоянно обновляете экран, как это часто бывает в макросе, который замедляет работу.

Во-первых, вопрос о том, что должен делать ваш макрос. Если он просто вставляет содержимое регистра по умолчанию, то правильное определение макроса - это просто qapjq. Нет необходимости позиционировать курсор в определенном месте на предыдущей строке. [РЕДАКТИРОВАТЬ: извините, я предполагал, что вы делаете пачку linewise, позиционирование необходимо, если вы вставляете символьный регистр в конце строки.,..]

Во-вторых, вы можете ускорить свой текущий макрос, установив lazyredraw (:set lazyredraw), поэтому экран не обновляется по мере его появления. Вероятно, это не ускорит работу, так как макросы клавиатуры, подобные этому, не похожи на прямую обработку буфера.

В-третьих, здесь другой метод, который должен занимать около секунды: .,+40000g/.*/normal! $p

Ответ 2

Это нормально. Как писал Герберт Сиц, обновление экрана происходит медленно.

Вы можете просто запустить команду подстановки: :.,+40000s/.*/&<c-r>".

  • .,+40000 - это диапазон, включающий текущую строку и 40000 после
  • .* в шаблоне соответствует целой строке
  • & в строке - это строка, которая была сопоставлена ​​
  • <c-r>" вставляет содержимое неназванного регистра

Ответ 3

Я бы рекомендовал запустить пустой vim с помощью "vim -u NONE". Часто плагины замедляют работу. Вы увидите, что он работает намного быстрее. Затем вам нужно выяснить, какой плагин вызывает это замедление. См. Также Как увидеть, какие плагины делают Vim медленным?