如何用 包围两个单词vim 中的标签,以便我可以使用点运算符重复操作?

发布于 2024-11-03 18:06:27 字数 299 浏览 0 评论 0原文

我正在使用 vim-surround 插件和这个 HTML(其中 * 是我的光标):

<li class="sample" style="border-color: #005462;">*#005462</li>

我想用 包围 #005462,所以它看起来像这样,<代码><代码>#005462。我可以使用视觉模式执行此操作,但想做一些可以使用点运算符重复的操作。有什么建议吗?

I'm working with the vim-surround plugin and this HTML (where the * is my cursor):

<li class="sample" style="border-color: #005462;">*#005462</li>

I'd like to surround the #005462 with <code> so it looks like this, <code>#005462</code>. I can do this with visual mode but would like to do something I can repeat with the dot operator. Any advice?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

郁金香雨 2024-11-10 18:06:27

您需要 repeat.vim 添加 .支持其他几个插件,包括环绕声。

You want repeat.vim which adds . support to several other plugins, including surround.

与之呼应 2024-11-10 18:06:27

从正常模式尝试录制宏。然后:

qai<code><esc>ea</code><esc>q
  1. 该命令表示在 a 中开始录制 (q)。
  2. 启动插入模式 (i)。
  3. 输入<代码>。
  4. 返回正常模式 ()。
  5. 移至单词 (e) 的末尾。
  6. 然后再次进入插入模式(a)。
  7. 输入。
  8. 返回正常模式 ()。
  9. 然后停止记录(q)。

之后您可以使用@a或@@重复此命令以重复上次使用的命令。
当你调用 a 时,不要忘记定位在正确的位置,否则你将不会得到预期的结果。

From normal mode try to record a macro. Then:

qai<code><esc>ea</code><esc>q
  1. This command say start recording (q) in a.
  2. Start insertion mode (i).
  3. Type <code>.
  4. Return to normal mode (<esc>).
  5. Move to the end of the word (e).
  6. Then enter insert mode again (a).
  7. Type </code>.
  8. Return to normal mode (<esc>).
  9. Then stop recording (q).

After you can repeat this command using @a or @@ for repeat last used command.
Dont forget to be positionned at the rigth place when you invoke a or you will not get the expected result.

岁月静好 2024-11-10 18:06:27

其他一些人在使用 around.vim 重复操作时遇到了问题:

在第一个链接中,有一个来自 around.vim 文档的引用意味着周围的视觉模式不起作用:

“.”命令适用于 ds、cs、
如果你安装了repeat.vim,则会出现yss

考虑到它周围的文本元素,我认为没有办法在不使用视觉模式的情况下只包围#005462。

因此,对于这个特定问题,我认为快速、可重复的搜索和替换是最好的选择。

:s/: \(#......\);/: <code>\1<\/code>;/g

转到右侧行,在命令行模式下键入或粘贴此内容,然后按 Enter 键。

移至下一行并按 & 重复。

如果您知道要替换文件中的所有内容,可以在 s/ 命令之前添加 %,如下所示:

:%s/: \(#......\);/: <code>\1<\/code>;/g

希望这会有所帮助!

A couple other people have run into problems repeating things with surround.vim:

In the first link, there is a quote from the surround.vim docs that implies visual mode surrounding doesn't work:

The "." command will work with ds, cs,
and yss if you install repeat.vim

And given the text elements surrounding it, I don't think there's a way to surround just the #005462 without using visual mode.

So for this particular problem, I think a quick, repeatable search and replace is your best bet.

:s/: \(#......\);/: <code>\1<\/code>;/g

Go to the right line, and type or paste this in command-line mode and press enter.

Move to the next line and press & to repeat it.

If you know you want to replace ALL of them in the file, you can add % before the s/ command, like so:

:%s/: \(#......\);/: <code>\1<\/code>;/g

Hope this helps!

不美如何 2024-11-10 18:06:27

观看这个 Vimcasts.org 有关转换 haml 的剧集到 erb。您可以使用相同的技术来完成您的任务。

Check out this Vimcasts.org episode on converting haml to erb. You can use the same technique to accomplish your task.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文