繁体   English   中英

vim 正则表达式 - 在行尾匹配任意数量的空格,除了 2

[英]vim regex - match any number of whitespace at end of line except 2

我想为 ale 编写一个修复程序,以删除除双空格之外的行尾的所有空格 - 在 markdown 中,这用于创建换行符。

我需要匹配“在行尾,1 个或多个空格而不是 2 个空格”

有点像\s\+$\&\s\{^2}$除了^不是大括号内的否定。 一些谷歌搜索显示,否定元字符的计数似乎是一个特别小众的问题。

您可以使用

:%s/\v(\s)@<!\s(\s{2,})?$//g

细节

  • % - 搜索所有行
  • s - 替代品
  • \v - 非常神奇的模式
  • (\s)@<! - 位置没有立即以空格开头
  • \s - 一个空格
  • (\s{2,})? - 两个或多个空格的可选出现
  • $ - 行尾
  • g - 线上的所有出现。

这就是这个正则表达式的工作方式(翻译成 PCRE)。

(这真的应该是一个评论,但格式很重要,在这里)

您希望以下代码段在您“修复”它后如何处理(标有_的空格)?

First line, without trailing spaces
Second line, with one trailing space_
Third line, with two trailing spaces__
Fourth line, with more than two trailing spaces______

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM