【问题标题】:Vim: Match spaces at end of line but not lines consisting of a single spaceVim:匹配行尾的空格,但不匹配由单个空格组成的行
【发布时间】:2011-12-18 06:21:39
【问题描述】:

我意识到在 vim 中,我可以使用突出显示行尾的尾随空格

match /\s\+$/

现在我想从匹配中排除那些恰好包含一个空格的行。我该怎么做呢? (它不需要是单行/正则表达式。)

【问题讨论】:

    标签: regex vim diff removing-whitespace


    【解决方案1】:

    match /\(\S\zs\s\+$\)\|\(^\s\{2,}$\)/

    这应该可行 - 将其分为 2 个部分

    第 1 部分 - 在行尾搜索包含其他内容的空格:\(\S\zs\s\+$\)
    不是空格\S,
    然后开始匹配\zs,
    行尾1个或多个空格\s\+$

    或匹配\|

    第 2 部分 - 搜索多个空格,即整行:\(^\s\{2,}$\)
    从行首开始^
    搜索至少 2 个空格 \s\{2,}
    在行尾$

    【讨论】:

    • 是的!太棒了,正是我所希望的,非常感谢!另外,谢谢你的解释。 :)
    • 还要考虑一个更短的正则表达式:\(^ $\)\@!\&\s\+$.
    • @ib。 - 很好,我在玩 @ 和 & 并不能让它们正常工作。
    【解决方案2】:

    这匹配所有包含多个空格的行,而忽略包含一个空格的行。

    match /\s\s\+$/
    

    【讨论】:

    • 我喜欢这个想法,但这也会在包含多个空格的常规行末尾隐藏单个空格。
    猜你喜欢
    • 2017-05-21
    • 2021-07-01
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    • 2019-01-12
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多