vim/gedit 删除字符之间的单词

vim/gedit 删除字符之间的单词

我有一个巨大的文件,其中包含类似下面的条目:

<option value="201">Medical</option>
<option value="203">Finance</option>
<option value="205">Tax Return</option>
---------------------------
---------------------------

我正在尝试一次性删除此文件中的“选项”条目,以便编辑后该文件看起来如下所示:

Medical
Finance
Tax Return
----------
----------

我在 Google 上搜索是否可以使用 vim 或 gedit 执行此操作,但没有找到与此相关的内容(不知道用什么关键字搜索)。有人知道吗?

答案1

您可以在 vim 中使用以下命令来执行您想要的操作。

:%s/<[^>]*>\([^<]*\).*/\1/g

这里我使用s命令,这是完整的语法,你可以通过输入来检查:help :s

:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]

% 表示范围,表示整个文件,{pattern} 是正则表达式 {string} 表示需要替换的字符串。它可以包含反向引用,即括号内的部分匹配模式。[flags] 是一些额外的选项。g对于全局,即一行中的所有模式都需要替换。另一个有用的标志是c在更改之前要求确认。我猜 [count] 一定是次数。

因此,这可以读作,搜索小于<后跟任意数量或不大于>字符,然后选择>,然后选择任意数量不小于<字符进入第一组\1,然后选择任意数量或任意字符,并全局将其替换为第一组\1。

查看此链接了解有关 vim 特定正则表达式的详细信息http://www.softpanorama.org/Editors/Vimorama/vim_regular_expressions.shtml

答案2

安装环绕.vimdst,它提供了可以完成这项工作的正常模式映射。

为了将其应用于多行,请在可视模式下选择它们并调用

:'<,'>normal dst

这会将普通模式命令dst应用于选定区域。如果要将其应用于整个文件(而不仅仅是视觉选择),请使用以下命令

:%normal dst

相关内容