在Vim中,如何将代码块向右移动?
我正在使用Vim编辑器。以下是我的情况:在Vim中,如何将代码块向右移动?,vim,Vim,我正在使用Vim编辑器。以下是我的情况: 1111111111111 2222222222222 3333333333333 4444444444444 上面是原始代码,我想让他们像下面。我该怎么做才能把它们全部移到右边 1111111111111 2222222222222 3333333333333 4444444444444 在命令模式下,可以使用>缩进单行4>将缩进当前和接下来的三行 如果您不知道提前多少行(可能相当大),可以使用范围。转到范围的第一行
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遵循sedsed
删除/添加行开头的额外空格,如下所示:
sed -i 's/^/ /g' test.txt
sed -i 's/^ //g' test.txt
此处未提及,但非常有用:
:>和:<命令具有一定的范围,可以使用附加的>或<。例如,:12,20>>>将第12行到第20行缩进三次(包括第12行到第20行)
Source挑剔:您在正常模式下使用>
;命令模式是当您键入了:
并且正在键入命令时。实际上,我不同意这一点。Vi总是引用命令和插入模式,尽管维基百科有错误:-)。冒号命令只是命令模式中允许的ex
命令,其前缀为:
。Vim确实区分了正常模式和命令行模式,记住它们是不同的,这一点很重要,以便于映射等。为了避免混淆,Vim帮助将始终引用“正常模式”。但是:help命令模式
将告诉您有关正常模式的信息,“这也称为命令模式”。