关于Vim正则表达式删除每行中的尾随空格

hal*_*tTm 3 regex vim

:%s/[ ]*$//g
Run Code Online (Sandbox Code Playgroud)

为什么上面的正则表达式在任何一行的末尾挤压> = 1个空格到正好一个但不是0个空格?

Tom*_*lak 11

你的正则表达式工作.运行后,行末尾没有空格.

您可能会看到的是"剩余"增量突出显示,如果您使用它将会消失
:%s/[ ]\+$//g.- 注意\+而不是*.增量突出显示仍然是因为* 总是匹配,即使是零空格也是如此.

要删除突出显示,请键入:noh(缩写:nohlsearch).

仅供参考::%s/[ ]*$//g相当于:%s/ *$//g.

  • 另外一种指定空格的方法是\ s而不是[],它将匹配制表符和空格.您也不需要g选项,因为您每行只进行一次替换.你最终得到:%s /\s\+ $ //添加g并没有伤害但我一直都是习惯性的:) (4认同)