例如,我们有一个包含各种域名的文件,大约 800 行。我们想使用 vim 快速找到所有以 www.example.** 开头的域名,其中 ** 是任何类型的 2 个字母。
example.site"
example.link]"
example.example'
example.ex'
example.xx]"'
现在我们可以在 vim 中使用 term 进行搜索example.
,但是我们如何使用通配符来匹配,所以我们可以 example.ex' and example.xx]"
在上面的示例中找到?
我们不想突出显示字符串
> example.site"
> example.link]"
> example.example'
只是example.ex and example.xx
(如果我们可以删除所有其他字符串并留下唯一匹配的字符串会更好)
你可以使用:
搜索“示例”。后跟两个“单词字符”
\w
,然后是一个“非单词字符”\W
要删除所有与模式不匹配的行,您可以执行以下操作:
要不就:
或者使用带有 negation 的 g[lobal] 命令
!
:上面的 3 个命令都会变成这样:
进入这个:
更新
对于处理这些模式在同一行的情况,如下所示:
您可以使用这样的搜索模式:
它的工作方式是找到“例子”。后跟三个“单词字符”,后跟任意数量的非空格字符,
[^ ]*
并以可选空格结尾\?
。因此,您可以用任何内容替换匹配项(这
g
意味着对行上的每个匹配项应用此替换,而不仅仅是它找到的第一个匹配项):要得到:
(您也可以使用 删除空行
:g/^$/d
。实际上,您可以使用 将其链接在一起,|
并与 一起完成所有操作:%s/example\.\w\w\w[^ ]* \?//g | %g/^$/d
)