它应该很小,甚至可能在帮助中,但我不知道如何导航它。如何在vi中快速缩进多行?


当前回答

对于代码块,{}:=+%对于选定的行:按住Shift键并使用向上/向下箭头键选择,然后按=。对于整个文件:gg+=+G

注意:“gg”表示转到第1行,“=”是缩进命令,“G”将光标移动到文件末尾。

其他回答

Vim UI的优点在于其一致性。编辑命令由命令和光标移动组成。光标移动始终相同:

H到屏幕顶部,L到底部,M到中间nG到第n行,G单独到文件底部,gg到顶部n移动到下一个搜索匹配,n移动到上一个}至段落末尾%到下一个匹配的括号,括号或标记类型进入下一行“x标记x,其中x是字母或其他字母”。还有很多,包括单词的w和w、行尖的$或0等,这些都不适用于这里,因为它们不是行移动。

因此,为了使用vim,您必须学会移动光标并记住一系列命令,例如,>to indent(和<to“outdent”)。

因此,要将光标位置的行缩进到屏幕顶部,请执行>H,>G以缩进到文件底部。

如果不是键入>H,而是键入dH,则删除相同的行块,cH替换它,等等。

某些光标移动更适合特定命令。特别是,%命令可以方便地缩进整个HTML或XML块。如果文件突出显示了语法(:syn on),则在标记的文本中设置光标(例如,在<div>的“i”中,输入>%将缩进到最后的</div>标记。

这就是Vim的工作原理:只需要记住光标移动和命令,以及如何混合它们。因此,我对这个问题的回答是:如果缩进被解释为移动行,=如果缩进被理解为在漂亮的打印中,那么“转到要缩进的行块的一端,然后键入>命令并移动到块的另一端”。

5==将从当前光标位置缩进五行。

因此,您可以在==之前键入任何数字。它将缩进行数。这是命令模式。

=G将从上到下缩进整个文件。

假设您使用2个空格缩进代码。类型:

:set shiftwidth=2

键入v(进入视觉块编辑模式)使用箭头键(或使用h/j/k/l)移动光标以高亮显示要缩进或不缩进的行。

然后:

键入>以缩进一次(2个空格)。键入2>以缩进两次(4个空格)。键入3>以缩进三次(6个空格)。...键入<以取消缩进一次(2个空格)。类型2<取消缩进两次(4个空格)。类型3<至无凹痕三次(6个空格)。...

你明白了。

(空行不会缩进,我觉得这有点不错。)


我在(g)vim文档中找到了缩进块的答案:

:help visual-block
/indent

如果要给命令计数,请在键入之前执行此操作运算符字符:“v{movearound}3>”(将第3行缩进到右侧)。

我没有在评论中找到我使用的方法,所以我将分享它(我认为只有Vim):

按Esc键进入命令模式移动到要缩进的最后一行的第一个字符Ctrl+V开始块选择移动到要缩进的第一行的第一个字符Shift+I进入特殊插入模式键入需要缩进的空格/制表符(例如两个按Esc键,所有行中将显示空格

当您不想在vimrc中更改缩进/制表符设置或在编辑时记住它们来更改时,这非常有用。

为了取消缩进,我使用相同的Ctrl+V块选择来选择空间,然后用D删除它。

:左侧帮助

在ex模式下,可以使用:left或:le将线条对齐指定的数量。具体来说,:left将左对齐[范围]中的行。它将行中的缩进设置为[缩进](默认值为0)。

:%le3或:%le 3或:%left3或:%left 3将通过填充三个空格来对齐整个文件。

:5,7 le 3将通过用三个空格填充第5行到第7行来对齐它们。

:le没有任何值,或:le 0将左对齐,填充值为0。

这在Vim和gVim中都有效。