【问题标题】:How can I indent a block of C code in Vim? [duplicate]如何在 Vim 中缩进一段 C 代码? [复制]
【发布时间】:2010-10-12 17:28:19
【问题描述】:

复制:

How to indent code in vim editor in Windows?

Tabbing selected section in VIM

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

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

【问题讨论】:

标签: vim vi


【解决方案1】:

我很惊讶还没有人提出=%
确保你有:set cindent,
将自己放在您所在街区的{} 之一上,然后点击:

=%

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

【讨论】:

  • 它只在我的 vim 中缩进一行。有什么想法吗?
  • 您不在 {} 中。
  • @Steve K:我是。选择所有行并按 = 有效。 =% 没有 :(
  • @Steve K:对不起。我误解了。我没有戴上 {}。我放进去。
  • 使用 :he textobjects 你可以 =i{ 并且不必位于块的特定开始/结束行
【解决方案2】:

除了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)**

* 或任何你的 shiftwidth 设置

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

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

【讨论】:

    【解决方案3】:

    我认为这将在不设置任何缩进开关的情况下完成。

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

    应在您提供的行号范围之间的行首添加一个制表符

    取消缩进:

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

    【讨论】:

      【解决方案4】:

      如果您有类似这样的未缩进代码...

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

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

      【讨论】:

        【解决方案5】:

        插入时:C-d, C-t
        而视觉:>, 正常时:>>、

        在任何这种模式下使用'.'进一步缩进。

        【讨论】:

          【解决方案6】:

          试试

          :设置 cindent

          这将打开 vim 中的 C 缩进魔法。所以只要你打开一个大括号,它就会自动跳格,直到你关闭大括号。

          【讨论】:

            【解决方案7】:

            使用 '>' 标记一个块

            【讨论】:

            • 选择所述视觉块后...
            【解决方案8】:

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

            V
            %
            >
            

            【讨论】:

              猜你喜欢
              • 2017-04-27
              • 2011-04-01
              • 1970-01-01
              • 2011-01-22
              • 1970-01-01
              • 2012-07-22
              • 1970-01-01
              相关资源
              最近更新 更多