删除选定行之前的空格

时间:2012-08-20 14:31:05

标签: vim

我有这样的文字:

This is a normal line. 
       6 spaces are before me.              //line 1 
      4 spaces are before me.               //line 2 
    3 spaces are before me.                 //line 3 
       6 spaces are before me.              //line 4 
     4 spaces are before me.                //line 5 
Another normal line.
   2 spaces are before me. But that is ok.  //line 7 
Line goes on.

如何使用vim选择并删除第1行到第5行之前的所有空格?

3 个答案:

答案 0 :(得分:7)

我使用视线模式( Shift + V )来选择我想要的行,然后对它们运行替换命令(点击:应该在开始时自动包含视觉标记'<,'>

:'<,'>s/^\s*

当你工作并且没有弄清楚行号时,这很有用。在这种情况下,如您所知,它是第2到第6行,您可以这样做:

:2,6s/^\s*

快速计算行号的有用选项是set number

substitute命令从每行的开头(\s*)贪婪地抓取所有空格(^\s*),并将其替换为空(等同于/^\s*//)。

答案 1 :(得分:2)

另一种快速方法:您也可以使用<<命令。转到第1行并输入5<<以将第1-5行向左移动。重复.命令,直到所有空格都消失。这对于使用>>增加缩进非常有用。

答案 2 :(得分:1)

如果没有为此文件定义缩进,则可以使用={motion}。如果光标位于第一行,请执行 = G 缩进到文件末尾或 =} 缩进到下一个空行。

要做到这一点,以下4行使用 = 4j