删除Vim中一行之前的所有空格

时间:2011-01-07 12:47:35

标签: vim indentation

我编写了一个解析XML标记的插件。标签内的内容是缩进的,当我将解析后的字符串复制到文件中时,它会像:

    Example line
        This is part of the parsed line
        Thats goes one
    End of line

我想要的是删除这些行前面的所有空格,最后的文本应该是

Example line
This is part of the parsed line
Thats goes one
End of line

我尝试使用=,但它无法按我想要的方式运行。如何用最小的击键来做到这一点?

9 个答案:

答案 0 :(得分:127)

要格式化左边的行,请使用:left。将此格式用作整个文件:

:%le

答案 1 :(得分:12)

简单的搜索/替换s/^\s*//应该可以解决问题,但它可能不是最小版本。

答案 2 :(得分:9)

就个人而言,我会用V直观地选择这些行,然后使用99<将文本尽可能地推到最左边。

答案 3 :(得分:4)

这个怎么样:

:%s/^ *//

或者您正在寻找一个vim脚本解决方案吗?

答案 4 :(得分:4)

只需在d后面输入w,然后在每行的开头输入j

答案 5 :(得分:1)

要删除指定行号的初始空格和制表符(例如,从第5行到第10行),

:5,10s/^\s*//

答案 6 :(得分:0)

LukášLalinský建议的搜索/替换或wikia页面中的%le方法可能是我这样做的方式,但作为另一种选择,您也可以这样做:

:%< 99

作为将整个文件(%)向左移动99次的快速方法。

答案 7 :(得分:0)

删除所有连续的空格::%s/ */ /g

我从以下地方开始很有用:

$screen-xs-min:              480px;
$screen-sm-min:              768px;
$screen-md-min:                992px;
$screen-lg-min:                  1200px;

要:

$screen-xs-min: 480px;       
$screen-sm-min: 768px;       
$screen-md-min: 992px;           
$screen-lg-min: 1200px;                                                                                                 

答案 8 :(得分:0)

实现此目的的另一种方法是使用普通命令sudo apt-get update sudo apt-get install libssl-dev

:h :normal-range

这将转到每一行的第0列()并删除( d )到第一个非白色字符( ^

这可以作为已接受的答案输入更多内容,但如果您考虑到更复杂的情况,则允许轻松扩展,例如额外的取消评论等:

:%norm d^

导致:

:%norm d^I#