如何在Vim中缩进一段C代码?

时间:2009-03-11 16:29:32

标签: vim vi

重复:

  

How to indent code in vim editor in Windows?

     

Tabbing selected section in VIM

有时我想在Vim中缩进一段C代码。我通常最终逐行标记它。

什么是更好/更快的方式?

8 个答案:

答案 0 :(得分:36)

我很惊讶没有人想出=% 确保您有:set cindent
把你自己放在你的{}块之一,然后点击:

=%

此块中的所有代码都将正确缩进。

答案 1 :(得分:6)

进入可视模式,选择下一个匹配的括号,缩进:

V
%
>

答案 2 :(得分:4)

使用'>'标记块

答案 3 :(得分:2)

插入时:C-d,C-t
虽然视觉:>,<
正常时:>>,<<

在任何此模式中使用'。'进一步缩进。

答案 4 :(得分:1)

尝试

:设置cindent

这将在vim中打开C缩进魔法。因此,只要打开支架,它就会自动切换,直到你关闭支架。

答案 5 :(得分:0)

如果您有未缩减的代码,看起来像这样......

if (foo)
{
/* line 1 */
/* line 2 */
/* line 3 */
}

...在命令模式下将光标放在“第1行”并输入3==,其中3是要缩进的行数。

答案 6 :(得分:0)

我认为没有设置任何缩进开关就会这样做。

:startRange,stopRange s/^/^\t/g

应在您提供的行号范围之间的行首添加标签空间

unindent with:

:startRange,stopRange s/^\t/^/g

答案 7 :(得分:0)

除了skinp所说的,如果你有:

   int foo()
   {
   /* line 1 */
       /* line 2 */
       /* line 3 */
       /* line 4 */
   }

并且无论出于何种原因希望它看起来像这样(即你想要从之前的位置缩进4个空格*,而不是根据cindent规则'正确'缩进':

   int foo()
   {
       /* line 1 */
           /* line 2 */
           /* line 3 */
           /* line 4 */
   }

在街区内的任何地方,做viB> (visualselection innerBlock indent)**

*或者您的移动宽度设置为

** vi}与viB相同,并且可能更容易记住,因为vi}在{}内选择,vi)选择in(),vi]在[]内选择,vi>在<>中选择。

此外,va},va)等除了块中包含的内容外,还要选择{},()等。