1

Я безуспешно пытаюсь скопировать и вставить шаблон во все строки, используя vim, скажем, у меня есть текстовый файл, который выглядит так:

Hello name is Mishal
Hello name is jon
Hello name is dod
Hello name is joli
Hello name is sara 

Я хочу скопировать последний шаблон или любой другой шаблон в каждой строке и положить его посередине в той же строке. так что это выглядит так:

Hello Mishal name is Mishal
Hello jon name is jon
Hello dod name is dod
Hello joli name is joli
Hello sara name is sara

Я знаю, что это можно сделать с помощью других инструментов, таких как awk, sed, cut, paste и другие, но мне нужно сделать это с помощью vim

1 ответ1

5

Вы можете сделать это с помощью макроса. В обычном режиме введите q плюс любую букву, чтобы начать запись макроса в регистре a .

Затем переместите курсор в начало строки и выполните следующую команду:

3wyw^wPa

объяснение

  • Таким образом, 3w переместить курсор на 3 слова
  • yw копия слово в реестре
  • ^w перейти к первому непустому символу, затем переместиться на одно слово вперед (вам нужно дважды набрать ^ , чтобы оно заработало.
  • P вставлять слова в текущем регистре перед курсором
  • a space добавить пробел после последнего слова

Затем введите q чтобы остановить запись макроса. Перейдите в начало строки, затем выполните макрос в регистре "a" @a и / или @@ чтобы выполнить последний макрос.

Я уверен, что есть более элегантный способ сделать это, но этот работает довольно хорошо.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .