删除vim中的空白区域,保持缩进

use*_*926 3 vim

我想删除vim中的所有空格,但保持默认缩进.目前所有输出文件都使用空格而不是制表符,所以

content
    content inside[Sneeky white space of epicness]
content
Run Code Online (Sandbox Code Playgroud)

应该:

content
    content inside
content
Run Code Online (Sandbox Code Playgroud)

注意: [Sneeky white space of epicness]表示一块空白区域.

Luc*_*c M 5

使用替代品

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

$意味着行尾.
*表示匹配前一个元素的零个或多个实例(由Jite建议)

请注意,您可以使用标签...要表示任何空白区域,请使用 \s

%s/\s*$//g
Run Code Online (Sandbox Code Playgroud)

编辑:

正如kojiro建议你可以用+而不是*.使用a *,vim可以替换每一行.使用a +,只有在需要完成的情况下才进行替换.

+表示匹配前一个元素的至少一个实例.
vim你必须逃脱+.

有关:help pattern-overview详细信息,请参阅

我的最终答案是:

%s/\s\+$//g
Run Code Online (Sandbox Code Playgroud)

  • @LucM我的意思是`\ s*$`在一行的末尾匹配*零或更多*空格.`"foo"`以零空格结束,因此匹配,并且将发生替换表达式,用空字符串替换行尾的零空格.该线路将保持不变,但无所事事是一项昂贵的操作. (2认同)
  • @LucM你错过了一个`$`在你的最终答案结束字符串,没有它它是非常错误的:) (2认同)