在Vim中,如何将代码块移到右边?

时间:2010-08-02 07:21:00

标签: vim

我正在使用Vim编辑器。这是我的情况:

1111111111111
2222222222222
3333333333333
4444444444444

以上是原始代码,我想让它们如下所示。我应该怎样做才能将它们全部转移到右边?

    1111111111111
    2222222222222
    3333333333333
    4444444444444

8 个答案:

答案 0 :(得分:39)

在命令模式下,您可以使用>>缩进一行。 4>>将缩进当前和后三行。

如果您事先不知道有多少行(可能非常大),您可以使用范围。转到范围的第一行并输入ma以放置标记A.然后转到最后一行并输入>'a以从此处缩进到标记A.您可以使用缩进来执行各种精彩的操作的范围内。

它们缩进的方式取决于你的shiftwidth设置等几个方面。我总是将shiftwidth和tabstop设置相同以避免出现问题:

:set ts=4 sw=4

(例如)。

答案 1 :(得分:23)

如果您已经在视觉模式中选择了四行:>会将它们shiftwidth向右移动。移动后,视觉选择将消失,但您可以通过.再次缩进(重复上一个命令)。

如果您处于正常模式,将光标放在第一行的任何位置:

  • >>将缩进该行,
  • 4>>将缩进所有四行,
  • >3j将以不同的方式执行相同的操作(从此行缩进到三行),
  • >}将缩进所有行,直到段落结尾(即到第一个空行,请参阅:help object-motions)和
  • >ap将缩进 a p -aragraph的所有行(请参阅:help text-objects),即使您的光标未打开第一行。

同样,您可以通过.重复这些命令以获得更深的缩进级别(或者您可以适当地设置shiftwidth。)

如果您的文件很好地由“段落”组成(我的大部分代码和散文都是),我认为您会发现ap文本对象是处理块的最常见方式像这样的文字。您还可以使用text-objects来加速视觉选择。

答案 2 :(得分:7)

点击>

就是这样。

答案 3 :(得分:4)

使用v选择块,然后按>键。

答案 4 :(得分:3)

使用>键。

答案 5 :(得分:0)

对我来说,需要追踪的数字,如>>4,要向右移动,或者之前移动,如4<<,向左移动。我使用的是Vim 7.4.52。

答案 6 :(得分:0)

  1. Ctlt+v选择多行。
  2. 键入:
  3. 类型sed替代模式匹配s/^/ /g(例如:用于添加4个空格)
  4. 按Enter

vim indent multiple lines

Vim遵循sed,从这样的行的开头删除/添加多余的空格:

sed -i 's/^/    /g'  test.txt
sed -i 's/^    //g'  test.txt

答案 7 :(得分:0)

此处未提及但非常有用:

<块引用>

:> 和 :< 命令接受一个范围,并且可以使用附加的 > 或 <。例如,:12,20>>> 将第 12 行到第 20 行缩进 3 次

来源https://vim.fandom.com/wiki/Shifting_blocks_visually