仅在有选择时删除选择的EOL空格

时间:2012-03-21 11:20:11

标签: vim space eol

如何检查选择是否包含EOL空格并仅在有?

时将其删除

我需要删除选区的EOL空格才能进行其他操作 我想检查是否有但不知道该怎么做。

3 个答案:

答案 0 :(得分:1)

当选择处于活动状态时(可视模式),只需键入

即可
:s/\ \+$//g

在命令行上,这将变为

'<,'>s/\ \+$//g

点击输入,完成任务。

如果有没有尾随空格,则会抛出错误(E486),但这没问题。


编辑1:
为了确保仅在真正出现尾随空格的地方应用替换,您可以在:g之前加:s作为前缀:

:g/\ \+$/s/\ \+$//g

:g的诀窍在于它只对那些与给定模式匹配的行应用给定的命令(s/\ \+$//g)。


编辑2:
事情变得更短,as I recently learned

:g/\s\+$/s///g

答案 1 :(得分:1)

您可以使用:substitute标志来抑制e命令中的错误。 因此,eckes的建议将成为:

:'<,'>s/\ \+$//ge

然后忽略任何错误,并且不会中断脚本。有关详细信息,请参阅:help s_flags

如果你真的想检查是否有尾随空格,你可以尝试使用像

这样的东西
if matchstr(getline("."),'\s\+$') == ""
    " there is no trailing whitespace
else
    " there is some trailing whitespace
endif

答案 2 :(得分:1)

如果您要删除所有空格,最短的命令可能是

:%s/\s*$//

适用于整个缓冲区

s 替换

/ \ s * $ 匹配任何空格,后跟行尾

// 将匹配替换为空