Vim 中的这条替换命令是含义是什么%s/\v^[^\>]+\>\s//g

2019-03-26 11:16:51 +08:00
 Vimax

在 vim ex 命令中输入以下命令用来替换文本内容。

%s/\v^[^>]+>\s//g

现在不明白其中的正则含义。

3552 次点击
所在节点    Vim
9 条回复
sugars
2019-03-26 11:31:10 +08:00
将匹配到\v^[^>]+>\s 这个的替换为空
will0404
2019-03-26 11:33:49 +08:00
分几段来看。
%s 大概是表示字符串替换。
/a/b/ 表示把 a 替换为 b
g 表示全局搜索替换,和正则的 g 应该是一个意思。
所以这里是说:把 \v^[^>]+>\s 匹配到的内容清空。至于 \v^[^>]+>\s 这个正则什么意思查表吧
ant2017
2019-03-26 11:34:31 +08:00
krixaar
2019-03-26 11:38:59 +08:00
% - 所有行,相当于 1,$
s/旧内容 /新内容 / - 把旧内容替换( substitute )成新内容

\v^[^>]+>\s - 旧内容
\v - 一个 tab
^ - 行开头
[^>]+ - 1 个以上不是字符">"的字符
> - 字符">"
\s - 一个空白字符

新内容为空,即删除

g - 替换所有满足这个正则的内容
knightdf
2019-03-26 11:43:12 +08:00
把所有垂直制表符开始,下一行开头开始以非`>`组成但是以`>`+空格的字符串删掉
599316527
2019-03-26 12:37:33 +08:00
chemzqm
2019-03-26 15:43:34 +08:00
> \v - 一个 tab

解释错了,开头的 \v 表示使用 very magic 模式的正则,此时跟别的语言正则差不多,后面的 + 不用 \ 来转义
jdhao
2019-03-27 10:41:27 +08:00
@chemzqm 说的是正确的,\v 不是 tab,\t 代表 tab。 具体 vim 中的 character class,可以使用 :h /character-classes 查看。magic 的具体解释,可以使用 :h /magic 查看。
Aura7988
2019-03-28 10:13:18 +08:00
\v 是 vim 的 magic 设置,表示任何元字符都不用加反斜杠。所以整个表达式的意思是:
把每行不是以 > 开头的并且后面带有空白符的一串字符删掉。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/548643

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX