Vim макро очень медленно - PullRequest
       1

Vim макро очень медленно

14 голосов
/ 05 декабря 2011

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

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

Ответы [ 4 ]

23 голосов
/ 05 декабря 2011

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

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

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

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

8 голосов
/ 05 декабря 2011

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

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

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

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

0 голосов
/ 30 декабря 2018

У меня были некоторые проблемы с очень медленными макросами VIM даже при работе на небольшом количестве строк (хотя изменения сложны). se synmaxcol=1 и se ft=txt и se foldmethod=manual могут сильно помочь. VIM не кажется достаточно умным, чтобы ждать, пока макрос будет создан, чтобы обновить подсветку синтаксиса, свертывание и другие подобные изменения. Честно говоря, это провал VIM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...