Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Vim中,如何将代码块向右移动?_Vim - Fatal编程技术网

在Vim中,如何将代码块向右移动?

在Vim中,如何将代码块向右移动?,vim,Vim,我正在使用Vim编辑器。以下是我的情况: 1111111111111 2222222222222 3333333333333 4444444444444 上面是原始代码,我想让他们像下面。我该怎么做才能把它们全部移到右边 1111111111111 2222222222222 3333333333333 4444444444444 在命令模式下,可以使用>缩进单行4>将缩进当前和接下来的三行 如果您不知道提前多少行(可能相当大),可以使用范围。转到范围的第一行

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

1111111111111
2222222222222
3333333333333
4444444444444
上面是原始代码,我想让他们像下面。我该怎么做才能把它们全部移到右边

    1111111111111
    2222222222222
    3333333333333
    4444444444444

在命令模式下,可以使用
>
缩进单行<代码>4>将缩进当前和接下来的三行

如果您不知道提前多少行(可能相当大),可以使用范围。转到范围的第一行,输入
ma
放置标记A。然后转到最后一行,输入
'A
从这里缩进到标记A。你可以用范围做各种奇妙的事情

它们的缩进方式取决于几个因素,如移位宽度设置。为了避免出现问题,我总是将shiftwidth和tabstop设置相同:

:set ts=4 sw=4
(例如)。

点击


仅此而已。

使用
键。

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

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

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

  • >
    将缩进该行
  • 4>
    将缩进所有四行
  • >3j
    将以不同的方式执行相同的操作(从此行缩进到下三行)
  • }
    将缩进所有行,直到段落结束(即第一个空行,请参见
    :帮助对象运动
    ),以及
  • -ap
    将缩进a-aragraph的所有行(请参见
    :帮助文本对象
    ),即使光标不在第一行
同样,您可以通过
重复这些命令以获得更深的缩进级别(或者您可以适当地设置
shiftwidth


如果您的文件由“段落”组成(我的大部分代码和散文都是这样),我想您会发现
ap
text对象是处理此类文本块的最常用方法。您还可以使用
文本对象
来加速视觉选择。

对于我来说,数字需要在后面,比如
>4
,然后向右移动,或者在前面,比如
4
  • Ctlt+v
    选择多行
  • 键入
  • 键入sed替换模式匹配
    s/^//g
    (例如:用于添加4个空格)
  • 按回车键
  • Vim遵循sed
    sed
    删除/添加行开头的额外空格,如下所示:

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

    此处未提及,但非常有用:

    :>和:<命令具有一定的范围,可以使用附加的>或<。例如,:12,20>>>将第12行到第20行缩进三次(包括第12行到第20行)


    Source

    挑剔:您在正常模式下使用
    >
    ;命令模式是当您键入了
    并且正在键入命令时。实际上,我不同意这一点。Vi总是引用命令和插入模式,尽管维基百科有错误:-)。冒号命令只是命令模式中允许的
    ex
    命令,其前缀为
    。Vim确实区分了正常模式和命令行模式,记住它们是不同的,这一点很重要,以便于映射等。为了避免混淆,Vim帮助将始终引用“正常模式”。但是
    :help命令模式
    将告诉您有关正常模式的信息,“这也称为命令模式”。