使用带有参数的vim-surround到函数

时间:2015-12-07 19:33:29

标签: vim repeat vim-plugin 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事件中实现这一点,我会非常感激。

非常感谢。

3 个答案:

答案 0 :(得分:2)

我个人非常喜欢定制环境。

自定义周围的示例,方法是将以下内容添加到~/.vim/after/ftplugin/html.vim

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

现在,在FileType html m的文件中,您可以使用周围的media_url。最好有2个环境用于花括号,1个用于:h surround-customizing功能。

有关详细信息,请参阅{{1}}

答案 1 :(得分:0)

您需要录制一个宏,然后对所有图像执行。

在正常模式下,首先将光标定位为“开始用qq录制宏,然后:

CS “'va'hSbimedia_urlbvf)s {GVS} GVS” Q

现在您已在q寄存器中录制了一个宏。执行白衣@q。

将你的自我定位在下一个图像(“)和@q。你可以将它与find(/”ima)结合,然后将n和@q结合起来。

如果你在录制宏的同时找到下一个单词,你可以用数字前缀宏... 10 @ q在10个图像上执行....

答案 2 :(得分:0)

:substitute似乎更适合这项工作:

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

如果您不想更改所有内容,请在c之后添加g,以便在每个周边之前征得用户同意。