如何从Vim中的HTML中删除<code style="display: none;"> </code>?

时间:2016-01-22 14:29:02

标签: html vim

我有这样的HTML:

<div id="content" style="cursor: pointer;">
<code style="display: none;"> </code><code style="display: none;"> </code><code style="display: none;"> </code><code style="display: none;"> </code><code style="display: none;"> </code><code style="display: none;"> </code><div class="container clearfix">
<code style="display: none;"> </code><code style="display: none;"> </code><code style="display: none;"> </code><code style="display: none;"> </code><code style="display: none;"> </code><code style="display: none;"> </code> <code style="display: none;"> </code>

我试过在Vim中这样做:

:%s/\<code style="display: none;"\> \</code\>//g

但是Vim告诉我有尾随的字符。

正确的方法是什么或删除这些标签?

3 个答案:

答案 0 :(得分:1)

我发现如果用HTML替换,除了/之外,使用其中一个命令分隔符会更容易。

e.g。

:%s+<code style="display: none;"> </code>++g

答案 1 :(得分:1)

你不需要逃避你逃脱的角色。实际上,\<是vim正则表达式单词边界的转义序列。您只想使用<。如果您将/用作命令分隔符,则需要对:%s/<code style="display: none;"> <\/code>//g 进行转义,但这就是全部。

<code>

如果要删除所有>.*</code>块,无论它们是什么,您都可以使用:%s/<code style="display: none;">.\{-}<\/code>//g 从每行的第一个到最终的开始和结束标记中贪婪地删除。如果你可能不想删除每个标签之间的其他东西,你可以使用一个不情愿/非贪婪的量词:

dat

如果您不确切地知道您尝试编辑的页面看起来很难提供更多建议,但在上面的情况下,您可以删除这两行,因为它们对它们毫无用处。您还可以使用SELECT rs.RowNo, rs.DATE, rs.NAME FROM ( SELECT t1.ROWNO, t1.DATE, t1.NAME, Rank() OVER ( PARTITION BY t1.DATE ORDER BY newid() ) AS Rank FROM table1 t1 ) rs INNER JOIN Table2 T2 ON rs.DATE = t2.DATE WHERE Rank <= t2.NoofTran 删除单个标记。

答案 2 :(得分:0)

将光标放在代码的第一个字符上(即<):

<code style="display: none;"> 

现在

  • df>
  • d%

f>超级有用:

  • f表示当前行中的给定字符(向前)
  • 要向后使用,请使用F<
  • 要将光标移动t个字符,请使用t>。在您的示例中,这会将光标置于结束"
  • 之前的>右侧

此外,%移动非常方便。它找到了匹配的项目。结束括号,光标下#endif的{​​{1}}语句,等等。