如何检查选择是否包含EOL空格并仅在有?
时将其删除我需要删除选区的EOL空格才能进行其他操作 我想检查是否有但不知道该怎么做。
答案 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 * $ 匹配任何空格,后跟行尾
// 将匹配替换为空