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

hello[link](#hello)

world[link](#world)

И я хочу закончить с:

<a name="hello"></a>
hello[[link](#hello)]

<a name="world"></a>
world[[link](#world)]

Сейчас мой макрос выглядит примерно так. После перемещения курсора вручную с помощью /link:

wwyt)O<a name="<Esc>pa"></a>

Он работает до тех пор, пока мне не понадобится вставить данные из регистра восстановления, после чего он просто умирает. Я также безуспешно пытался указать регистр с помощью "*y / "*p. Есть идеи, что происходит и как я могу это обойти?

vim
0
Josh Bodah 27 Фев 2016 в 18:05

2 ответа

Лучший ответ

Вот что можно попробовать:

  • Перейти к самому первому символу файла (gg)
  • Начать запись макроса (qq)
  • ywi<a name=" esc pli"></a> Enter
  • Остановить запись макроса и применить к другим строкам
0
Atri 27 Фев 2016 в 15:22

Эта команда преобразует все непустые строки в соответствии с вашим правилом.

g/./s#\v([^[]*)(.*)#<a name="\1"></a>\r\1[\2]#
0
Kent 27 Фев 2016 в 22:32