Использование vim-round с аргументом функции
Я новичок в 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, я был бы очень благодарен.
Большое спасибо.
3 ответа
Вам нужно будет записать макрос, а затем выполнить на всех изображениях.
В обычном режиме установите курсор вначале "начните запись макроса с помощью qq, затем:
CS"'S va'hSbimedia_urlbvf) {} GVS GVS" д
Теперь вы записали макрос в регистр q. Выполните это с @q.
Поместите себя в следующее изображение (") и @q. Вы можете объединить его с помощью find (/"ima), а затем объединить n и @q.
Если вы во время записи макроса позиционируете себя с помощью поиска на следующем слове, вы можете добавить к макросу префикс с номером... 10@q выполнить его на 10 изображениях....
Лично я большой поклонник нестандартной обстановки.
Пример пользовательского окружения, добавив следующее к ~/.vim/after/ftplugin/html.vim
:
let b:surround_{char2nr('m')} = "{{ media_url('\r') }}"
Сейчас в файле с FileType
из html
Вы можете использовать m
окружающих. Лучше всего иметь 2 окружения, одно для фигурных скобок и одно для media_url
функция.
Для получения дополнительной информации см. :h surround-customizing
:substitute
кажется, лучше подходит для этой работы:
:s#\v<img src="\zs\S{-}\.jpg\ze"#{{ media_url('\1') }}#g
Если вы не хотите менять их все, добавьте c
после g
просить согласия пользователя перед каждым окружением.