V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Vimax
V2EX  ›  Vim

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

  •  1
     
  •   Vimax · 2019-03-26 11:16:51 +08:00 · 3527 次点击
    这是一个创建于 2070 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    新内容为空,即删除

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

    解释错了,开头的 \v 表示使用 very magic 模式的正则,此时跟别的语言正则差不多,后面的 + 不用 \ 来转义
    jdhao
        8
    jdhao  
       2019-03-27 10:41:27 +08:00
    @chemzqm 说的是正确的,\v 不是 tab,\t 代表 tab。 具体 vim 中的 character class,可以使用 :h /character-classes 查看。magic 的具体解释,可以使用 :h /magic 查看。
    Aura7988
        9
    Aura7988  
       2019-03-28 10:13:18 +08:00
    \v 是 vim 的 magic 设置,表示任何元字符都不用加反斜杠。所以整个表达式的意思是:
    把每行不是以 > 开头的并且后面带有空白符的一串字符删掉。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5837 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 01:56 · PVG 09:56 · LAX 17:56 · JFK 20:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.