2015-12-07 3 views
0

Я новичок в vim-surround. Я хотел бы добиться этого.Использование vim-surround с аргументом функции

У меня есть HTML-файл с большим количеством изображений, как это (* это положение курсора):

<img src="ima*ges/pages/img1.jpg" alt=""> 

И я хотел бы изменить его с этим:

<img src="{{ media_url('images/pages/img1.jpg') }}" alt=""> 

Я попытался ys"f но он работает не так, как ожидалось. Я хотел бы изменить все jpg-изображения с таким шаблоном, я знаю, что vim-repeat я буду копаться в нем, как только я смогу изменить первое правильно.

Если вы знаете способ достижения этого во всех случаях jpg, я был бы очень благодарен.

спасибо.

ответ

0

Вам нужно будет записать макрос, а затем выполнить все изображения.

В нормальном режиме установите курсор на первый «начать запись макроса с QQ, то:

CS» 'va'hSbimedia_urlbvf) S {GvS} GvS "д

Теперь вы записали макрос q register. Выполните его whit @q.

Поместите себя на следующее изображение (") и @q. Вы можете комбинировать его с find (/ "ima), затем объединить n и @q.

Если вы позиционируете себя при поиске следующего слова во время записи макроса, вы можете префикс макроса с номером ... 10 @ q выполнить его на 10 изображения ....

+0

Благодарим за ваш ответ! Я пытаюсь решить одно решение, чтобы понять, как это работает, но когда я прихожу к подчеркиванию, что-то кажется неправильным. Когда я набираю 'cs '' va'hSb', тогда я получаю , однако, когда я начинаю вводить' media_', как только я нажимаю '_', я добираюсь до начала строки. –

+0

Извините, отсутствует i для вставки перед публикацией. Я писал это со своей головы, потому что я не могу вставить здесь q-регистрационный контент, большинство специальных символов съедают. – Sim

+0

Спасибо, теперь у меня есть аналогичная проблема, но чтобы оставить режим вставки и вернуться к команде объемного звучания.После того, как я напечатаю 'i' vim, вы войдете в режим вставки, но как сообщить vim, что это фактически часть команды объемного звучания? Может быть, команда должна быть расплющена в двух частях? Я вполне понимаю первую часть 'cs '' va'h', а не остальную. –

0

:substitute, кажется, лучше подходит для этой работы:

:s#\v<img src="\zs\S{-}\.jpg\ze"#{{ media_url('\1') }}#g 

Если вы не хотите, чтобы изменить все из них, добавить c после g просить согласия пользователя перед тем каждый окружающий.

+0

Спасибо за ваш ответ! Я получаю '' шаблон не найден: \ v

2

Pe rsonally Я большой поклонник обычаев.

Пример пользовательской окружающей, добавив следующее ~/.vim/after/ftplugin/html.vim:

let b:surround_{char2nr('m')} = "{{ media_url('\r') }}" 

Теперь в файла с FileType из html вы можете использовать m окружающих. Лучше всего иметь 2 окружения для фигурных скобок и один для функции media_url.

Для получения дополнительной информации см. :h surround-customizing

Смежные вопросы