vim:删除多行的前两个空格

使用VIM删除每行的前两个空格最简单的方法是什么? 基本上每条线都重复“2x”。

澄清:这里的假设是前2个字符是空格。 所以问题是关于多行缩进。

一些更多的select。 你可以决定哪个是“最简单的方法”。

删除每行的前2个字符:

:%normal 2x 

删除每行的前2个字符,只有当它们是空格时:

 :%s/^ / 

请注意,最后一个斜杠是可选的,只有在这里才能看到两个空格。 没有斜线,只有7个字符,包括:

将缩进移动到每行的左侧:

 :%normal << 
  1. 使用Ctrl-V进入视觉模块模式(如果使用Ctrl-V粘贴,则使用Ctrl-V Ctrl-Q );
  2. 用箭头select要删除的区域;
  3. 然后按d删除所选区域。

您也可以使用search和replace(在ex编辑器中,通过字符访问):

删除前两个字符无论如何:

 %s/^.\{2}// 

删除前两个空白字符(必须在开头,两个都必须是空格…任何不符合该条件的行将被跳过):

 %s/^\s\{2}// 

假设一个shiftwidth=2 ,然后使用范围为%

 :%< 

两个空格,或两个字符? ( 2x是后者。)

 :[range]s/^ // 

删除每行开始处的两个空格; 对于整个文件1,$使用% (相当于1,$ )作为[range]

 :[range]s/^..// 

删除每行的前两个字符,不pipe它们是什么。 (注意,它删除了两个字符 ,不一定是两 ;一个制表符作为一个字符)。

如果你真正在做的是改变缩进,你可以使用< command减less它,或者使用>命令来增加缩进。 设置shiftwidth来控制移动的距离,例如

 :set shiftwidth=2 

我会尝试以下两种方法之一:

  1. 对块进行列编辑,使用Ctrl+V进行删除(通常映射到Ctrl+Q )。
  2. 在第一行使用q1 (或任何其他想要表示logging寄存器的数字/字母)logging一个macros,然后使用@1重复播放该macros(使用前面的例子,更好的方法是用前面的数字来表示它运行多less次 – 例如10@1运行这个macros10次,但是,这取决于你logging的内容 – 确保将光标0倒退或者删除一行,如果相关的话。

我还要补充:学习如何为vimconfiguration缩进。 那么一个简单的gg=G就可以做到这一点。