2010-02-25 66 views
22

有没有办法在vim中缩进选择的线,就像我们在文本编辑器中选择一束线并按Tab(或Shift Tab)来缩进/取消所选行呢?我正在讨论一般的缩进问题,并且与代码缩进无关。在VIM中缩进一堆线

+1

我对此主题做了一个截屏视图:http://vimcasts.org/episodes/indentation-commands/ – nelstrom 2010-02-25 09:03:44

+0

可能重复[在vi中快速缩进多行](http://stackoverflow.com/questions/235839/ indent-multiple-lines-quickly-in-vi) – user 2015-07-23 23:39:04

回答

16

使用视觉模式,因为彼得建议。您还可以使用X >>其中X是您要缩进的行数。例如。 5 >>从当前行缩进五行并向下。

+2

由于Stack Overflow和编写代码示例,我最常做的事情之一是'> G',以便从当前位置缩进到文件末尾。我通常使用Ruby编写,所以它实际上是'> G.',因为Rubyists使用双空格缩进,SO需要四个,但是YMMV。 – 2013-01-28 01:18:17

35

可以(经由 + V)选择一组与视线模式的行,然后键入

>

和,到DEDENT语言,

<

您也可以添加数字参数。发现你没有缩进足够?点击gv重新选择您之前的选择。

虽然在正常模式下输入,尝试CTRL + ŤCTRL + d缩进或DEDENT语言。

+0

它不应该是'超越'而不是'dedent'吗? – 2010-02-25 07:50:31

+2

@Vinko应该是,但不是:)一个outdent是一个向后缩进;一个缩进是一个缩进。也许它应该是真正的无名之辈。 – Peter 2010-02-25 08:18:47

+3

您不需要重新选择要缩进的行。只需使用点命令:> ...将缩进四次。 – 2010-02-28 08:24:14

3

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

8

我使用下面的映射缩进/取消缩进:

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

使用TAB缩进和Shift-Tab为视所选行取消缩进。

如果一个块被选中Vim indents/unindents什么是 该块的开始是否正确。

+0

它的作品也适合我! @ MacVim – 2010-03-25 19:04:49