0

我是 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 的出现,我将非常感激。

非常感谢你。

4

3 回答 3

2

就我个人而言,我是定制环境的忠实粉丝。

自定义环境的示例,通过将以下内容添加到~/.vim/after/ftplugin/html.vim

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

现在在文件FileTypehtml你可以使用m周围的。最好有两个环境,一个用于花括号,一个用于media_url功能。

有关更多信息,请参阅:h surround-customizing

于 2015-12-07T21:19:59.333 回答
0

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

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

cs"'va'hSbimedia_urlbvf)S{gvS}gvS"q

现在您已经在 q 寄存器中记录了一个宏。用@q 执行它。

将自己定位在下一个图像(“)和@q。您可以将其与 find (/"ima) 结合,然后结合 n 和 @q。

如果您在录制宏时将自己定位在下一个单词上,您可以在宏前面加上数字 ... 10@q 在 10 个图像上执行它...。

于 2015-12-07T20:07:38.303 回答
0

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

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

如果您不想更改所有这些,请在每个环绕之前添加cg征求用户同意。

于 2015-12-07T20:36:10.963 回答