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

twi*_*imo 77 vim

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

澄清:这里假设前两个字符是空格.所以问题是关于多条线的缩进.

Tom*_*err 109

  1. 使用Ctrl-V(或者Ctrl-Q如果您使用Ctrl-V粘贴)进入视觉块模式;
  2. 用箭头选择要删除的区域;
  3. 然后按d删除所选区域.

  • ctrl-v选择要删除的字符,然后选择d进行剪切. (7认同)
  • 最受欢迎的答案!:-) (2认同)

bhi*_*ley 89

还有一些选择.你可以决定哪种是"最简单的方法".

删除每行的前2个字符:

:%normal 2x
Run Code Online (Sandbox Code Playgroud)

删除每一行的前两个字符,只要它们是空格:

:%s/^  /
Run Code Online (Sandbox Code Playgroud)

请注意,最后一个斜杠是可选的,仅在此处,以便您可以看到这两个空格.没有斜线,它只有7个字符,包括:.

每行都将缩进移到左侧:

:%normal <<
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢在Vim中有30种不同的方法可以做些什么.像这样的问题带来了你从未知道的事情.我不知道%正常. (11认同)

Jas*_*own 13

您还可以使用搜索和替换(在ex编辑器中,通过:角色访问):

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

%s/^.\{2}//
Run Code Online (Sandbox Code Playgroud)

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

%s/^\s\{2}//
Run Code Online (Sandbox Code Playgroud)

  • 最后的/ g是多余的.你每条线只做一场比赛. (2认同)

Pet*_*ker 7

假设a shiftwidth=2,则使用范围为shift%

:%<
Run Code Online (Sandbox Code Playgroud)