получение нескольких изменений одновременно с помощью vimdiff

Я использую vimdiff для объединения изменений из файла другой группы в наш файл. Не все изменения должны быть приняты, поэтому мне приходится делать это вручную. Однако мне было интересно, есть ли способ сказать vimdiff принять несколько изменений одновременно. то есть вместо того, чтобы принимать только следующее изменение, я хочу принять сразу следующие 10 изменений. Прямо сейчас я использую «]c», чтобы перейти к следующему изменению, и «do», чтобы принять это изменение. В файле 250000 строк, а у меня только 5000 строк...

С уважением, Хагай


person user2307618    schedule 22.04.2013    source источник


Ответы (1)


В двух словах, вы можете добиться именно того, чего хотите, с помощью макросов:

  1. В обычном режиме нажмите 'q' и случайную букву, скажем, 'f': Начнется запись макроса в регистр 'f'.
  2. Выполните действия, которые хотите повторить: в данном случае ']c' и 'do'.
  3. Остановите запись макроса. Просто снова нажмите "q".

Теперь вы можете использовать его, набрав '@f' в обычном режиме, и он будет воспроизводить действия, записанные в макросе 'f'. Оттуда у вас есть несколько вариантов:

  • Если вы наберете '@@', vim воспроизведет последний макрос. Подсказка: если просто удерживать комбинацию нажатой на клавиатуре, она будет выполняться построчно очень быстро.
  • Если вы наберете '1000@f', vim воспроизведет последний макрос 1000 раз, что в значительной степени соответствует вашим ожиданиям.
  • Если вы хотите сэкономить на наборе текста, вы можете записать новый макрос, например, 'g', выполняющий '1000@f', таким образом '@g' вызовет '1000@f', хотя, если вы используете '@@' после '@ g' он будет делать это построчно.

Здесь есть хороший учебник: http://www.thegeekstuff.com/2009/01/vi-and-vim-macro-tutorial-how-to-record-and-play/

person Diego Pomares    schedule 28.12.2013
comment
@user2307618 user2307618 Я уверен, что вам это больше не нужно, но я публикую решение только для протокола. - person Diego Pomares; 28.12.2013