vim:删除多行的前两个空格
使用VIM删除每行的前两个空格最简单的方法是什么? 基本上每条线都重复“2x”。
澄清:这里的假设是前2个字符是空格。 所以问题是关于多行缩进。
一些更多的select。 你可以决定哪个是“最简单的方法”。
删除每行的前2个字符:
:%normal 2x
删除每行的前2个字符,只有当它们是空格时:
:%s/^ /
请注意,最后一个斜杠是可选的,只有在这里才能看到两个空格。 没有斜线,只有7个字符,包括:
。
将缩进移动到每行的左侧:
:%normal <<
- 使用
Ctrl-V
进入视觉模块模式(如果使用Ctrl-V
粘贴,则使用Ctrl-V
Ctrl-Q
); - 用箭头select要删除的区域;
- 然后按
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
我会尝试以下两种方法之一:
- 对块进行列编辑,使用
Ctrl+V
进行删除(通常映射到Ctrl+Q
)。 - 在第一行使用
q1
(或任何其他想要表示logging寄存器的数字/字母)logging一个macros,然后使用@1
重复播放该macros(使用前面的例子,更好的方法是用前面的数字来表示它运行多less次 – 例如10@1
运行这个macros10次,但是,这取决于你logging的内容 – 确保将光标0
倒退或者删除一行,如果相关的话。
我还要补充:学习如何为vimconfiguration缩进。 那么一个简单的gg=G
就可以做到这一点。