在Vim中缩进一系列代码

27

在 Vim 中,是否有一种方法可以缩进选择的行,就像我们在文本编辑器中选定一堆行并按 tab(或 shift + tab)来缩进/取消缩进所选行一样?

我所说的是一般缩进,而不是与代码缩进相关的问题。


1
我在这个主题上制作了一个屏幕录像:http://vimcasts.org/episodes/indentation-commands/ - nelstrom
5个回答

42

你可以使用可视化行模式(通过 Shift + V)选择一组行,然后键入

>

来缩进行,键入

<

来取消缩进。你还可以添加数字参数。发现没有缩进足够吗?按下gv重新选择以前的选定内容。

在正常模式下输入时,可以尝试使用Ctrl+TCtrl+D进行缩进或取消缩进。


应该是“outdent”而不是“dedent”吧? - Vinko Vrsalovic
2
@Vinko应该是,但实际上并不是 :) outdent是向后缩进;dedent是撤销缩进。也许它真的应该叫做undent。 - Peter
3
不需要重新选择要缩进更多的行。只需使用点命令:>...将缩进四次。 - Marius Andersen
我相信这应该是被接受的答案,因为Brian的解决方案虽然正确,但更难实现。 - Savas Vedova
@SavasVedova 但这并不是“接受答案”的概念所要传达的意思。 - Stefan van den Akker

20

使用可视化模式,如Peter所建议的那样。你也可以使用X>>,其中X是你想要缩进的行数。例如,5>>将从当前行向下缩进五行。


2
由于 Stack Overflow 和编写代码示例,我经常做的一件事情是 >G,从当前位置缩进到文件末尾。通常我使用 Ruby 编写,所以实际上是 >G.,因为 Ruby 程序员使用两个空格缩进,而 Stack Overflow 要求四个空格缩进,但可能会有所不同。 - the Tin Man

11

我使用以下映射来缩进/取消缩进:

vmap <TAB> >gv
vmap <S-TAB> <gv

使用TAB键缩进,使用shift-TAB键取消选定行的缩进。

如果选择了一个代码块,Vim将缩进/取消缩进该块右侧的内容。


3

根据其他答案的建议,您可以使用 >。或者,您可以通过在可视模式下选择一组行(使用 shift+V),然后使用 = 或使用 == 对当前行进行缩进,以自动正确缩进代码。


3

这个主题有一个Vim Cast:缩进命令

我喜欢Vim Casts。它们既信息丰富又愉悦地观看。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接