考虑像这样的文本

<p>In this article, using <code>ffmpeg </code>I am going to
 show you just how easy it is to add a red hue to an image</p>

我只想删除<code></code>标签.我试过:

 vnoremap <silent> rt :s/<[^>]*>//g<CR>:noh<CR>

但这将删除当前行中的所有标记,即使唯一突出显示的部分是<code>ffmpeg </code>

推荐答案

要一次删除一个标签,您可以使用内置的a<运动,该运动在尖括号分隔的区域上操作.标记上的两个da<将分别删除开始标记和结束标记.

事实上,我会跳到"code",删除标签并重复:

/code<CR>da<n.

:substitute命令不能按预期工作的原因是它在lines上工作,而不是在视觉 Select 上.您可以使用\%V标记将其约束到可视区域,如下所示:

:s/\%V<[^>]*>//g

或(使用非贪婪匹配):

:s/\%V<.\{-}>//g

This will remove the <code> and </code> tags only but leave "ffmpeg" in the buffer.
See :help \%V.

请注意,这将仅在当前行上操作,因此换行符可能会删除开始标记,但不会删除结束标记.

要同时删除标记和其中的任何内容,可以使用it表示inner tag,使用at表示a tag个运动.将光标放在<code>...</code>上的任何位置并按dat将删除开始和结束代码标签以及内部的任何内容. 有关详细信息,请参阅:help at.文本对象(这些对象被称为文本对象)非常有用,它们都可以在:help text-objects中找到.

这可以用来只删除标记,方法是拖动标记内的所有内容,删除所有内容并进行第一次 pull .将光标放在标记内,执行以下操作:

yitdat"0P

在这里,yit在标记内部(隐式地指向寄存器0),dat删除标记和其中的所有内容,"0P将寄存器0的内容放在游标之前.最大的优势是,这也将在不同的领域发挥作用.

对于一次性标签删除,我会坚持使用da<,如上所述.如果该问题经常出现,请考虑为上面的命令创建映射:

:nnoremap <buffer> <your key> yitdat"0P

Html相关问答推荐

如何删除html原生对话框的宽度

如何在一个div中心字体图标?

如何从ThymeLeaf模板中分离CSS

对称渐变作为背景

粘滞的导航栏延伸到超过页边距的右侧

有没有一种方法可以动态地从网格或Flexbox中取出HTML元素?

在<;style&>中列出的三种字体中,只有两种显示

如何设置弹性盒子容器的具体大小?

有没有一种方法可以很容易地将这个div从底部:0转换到顶部:0?

你将如何为手机制作导航栏

如何使用css横向显示英文和中日韩文字?

是否可以只使用css而不使用像&;nbsp;这样的HTML符号来实现断字而不换行空格?

如何使元素具有粘性

如何为高度较小的块制作边框动画?

为什么 html 元素的 max-width 和 width 一起工作?

margin-top 未应用于无序列表的第一项

如何从 div 内的属性中提取 href 和文本

在 flexbox 中使用 spacer 是否有效

如何制作一个空的网格模板行来填充剩余空间?

如何自定义具有白色透明背景的光标图像?