使用VIM删除每行的前2个空格的最简单方法是什么?基本上它每行重复“2x”。
澄清:这里假设前两个字符是空格。所以问题是关于多条线的缩进。
答案 0 :(得分:103)
Ctrl-V
进入可视屏蔽模式(如果使用Ctrl-Q
进行粘贴,则输入Ctrl-V
); d
删除所选区域。答案 1 :(得分:88)
更多选择。你可以决定哪种是“最简单的方法”。
删除每行的前2个字符:
:%normal 2x
删除每一行的前2个字符,只要它们是空格:
:%s/^ /
请注意,最后一个斜杠是可选的,仅在此处,以便您可以看到这两个空格。没有斜杠,它只有7个字符,包括:
。
为每一行向左移动缩进:
:%normal <<
答案 2 :(得分:13)
你也可以使用搜索和替换(在ex编辑器中,通过:字符访问):
无论如何都删除前两个字符:
%s/^.\{2}//
删除前两个空白字符(必须在开头,两者都必须是空格......将跳过任何不符合该条件的行):
%s/^\s\{2}//
答案 3 :(得分:7)
假设shiftwidth=2
,则使用范围为%
:%<
答案 4 :(得分:4)
两个空格,还是两个字符? (2x
执行后者。)
:[range]s/^ //
删除每行开头的两个空格;对%
使用1,$
(相当于[range]
)对整个文件执行此操作。
:[range]s/^..//
删除每行的前两个字符,无论它们是什么。 (请注意,它会删除两个字符,而不一定是两个列;一个制表符会计为一个字符。)
如果您真正在做的是更改缩进,可以使用<
命令来减少缩进,或使用>
命令来增加缩进。设置shiftwidth
以控制它移动的距离,例如
:set shiftwidth=2
答案 5 :(得分:3)
我会尝试以下两种方法之一:
Ctrl+V
对块进行列编辑以进行删除(通常映射到Ctrl+Q
)。q1
(或您想要表示录制寄存器的任何其他数字/字母)在第一行录制宏,然后使用@1
多次重播该宏(使用我之前的示例)更好的是,使用前面的数字告诉它运行多少次 - 例如10@1
运行该宏10次。但是,它确实取决于你记录的内容 - 确保回放光标{ {1}}或删除一行0
,如果相关的话。答案 6 :(得分:3)
我还要补充:学习如何为vim配置缩进。然后一个简单的gg=G
就可以了。