vim:删除多行的前两个空格
使用VIM删除每行的前两个空格最简单的方法是什么? 基本上每条线都重复“2x”。
澄清:这里的假设是前2个字符是空格。 所以问题是关于多行缩进。
一些更多的select。 你可以决定哪个是“最简单的方法”。
删除每行的前2个字符:
:%normal 2x
删除每行的前2个字符,只有当它们是空格时:
:%s/^ /
请注意,最后一个斜杠是可选的,只有在这里才能看到两个空格。 没有斜线,只有7个字符,包括: 。
将缩进移动到每行的左侧:
:%normal <<
- 使用
Ctrl-V进入视觉模块模式(如果使用Ctrl-V粘贴,则使用Ctrl-VCtrl-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就可以做到这一点。