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

use*_*215 6 vim delete

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

<option value="201">Medical</option>
<option value="203">Finance</option>
<option value="205">Tax Return</option>
---------------------------
---------------------------
Run Code Online (Sandbox Code Playgroud)

我试图一次性删除此文件中的“选项”条目,以便该文件在编辑后看起来像下面的那个:

Medical
Finance
Tax Return
----------
----------
Run Code Online (Sandbox Code Playgroud)

如果我可以使用 vim 或 gedit 执行此操作,我在 google 中搜索了此内容,但没有找到与此相关的任何内容(不知道用什么关键字搜索)。有人有什么想法吗?

bal*_*lki 11

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

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

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

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

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

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

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


Ada*_*tek 9

安装around.vim,它提供了一个正常模式的映射dst来完成这项工作。

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

:'<,'>normal dst
Run Code Online (Sandbox Code Playgroud)

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

:%normal dst
Run Code Online (Sandbox Code Playgroud)