3

我有这样的文字:

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 行之前的所有空格?

4

3 回答 3

7

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

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

这在您工作但还没有弄清楚行号时很有用。在这种情况下,您知道它是第 2 到 6 行,您可以执行以下操作:

:2,6s/^\s*

快速找出行号的一个有用选项是set number.

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

于 2012-08-20T14:33:36.257 回答
2

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

于 2012-08-21T11:33:53.613 回答
1

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

为此和以下 4 行使用=4j.

于 2012-08-21T11:39:18.207 回答