如何检查选择是否有 EOL 空格并仅在有时才将其删除?
我需要删除选择的 EOL 空间才能执行其他操作。
我想检查是否有但不知道该怎么做。
在选择活动(视觉模式)时,只需键入
:s/\ \+$//g
在命令行上,这将成为
'<,'>s/\ \+$//g
命中Enter,任务完成。
如果没有尾随空格,则会抛出错误(E486),但这没问题。
编辑1:
为确保仅在确实出现尾随空格的情况下应用替换,您可以在:s
by前缀:g
:
:g/\ \+$/s/\ \+$//g
诀窍:g
在于它s/\ \+$//g
仅在与给定模式匹配的那些行上应用给定命令 ()。
编辑 2:
事情变得更短,正如我最近了解到的那样:
:g/\s\+$/s///g
:substitute
您可以使用e
标志抑制命令中的错误。所以 eckes 的建议会变成:
:'<,'>s/\ \+$//ge
然后忽略任何错误,并且脚本不会中断。有关:help s_flags
更多信息,请参阅。
如果你真的想检查是否有尾随空格,你可以尝试使用类似的东西
if matchstr(getline("."),'\s\+$') == ""
" there is no trailing whitespace
else
" there is some trailing whitespace
endif
如果您要删除所有空格,最短的命令可能是
:%s/\s*$//
%适用于整个缓冲区
s代替
/\s*$匹配任何空格,后跟行尾
//用空替换匹配项