【问题标题】:VIM - Reformatting indentation and bracesVIM - 重新格式化缩进和大括号
【发布时间】:2015-08-26 03:50:12
【问题描述】:

在 VIM 中处理代码块时,我可以通过在可视模式下选择区域轻松地重新缩进代码块 (SHIFT+v) ,然后点击 =。这会重新标记代码行,使用正确的缩进深度、硬制表符与空格等。

我有大量需要重构的函数,并且我有几个带大括号的代码块与if/else 关键字在同一行,即:

if(something) {
  doFunction(something);
} else if(somethingElse) {
  doFunction(somethingElse);
} else {
  // default stuff to do
}

我想将大括号和间距样式更改为:

if ( something ) {
  doFunction( something);
}
else if ( somethingElse )
{
  doFunction( somethingElse );
}
else
{
  // default stuff to do
}

区别包括:

  • 将开/关大括号放在自己的专用线上
  • ifelse if 和函数的参数有一个空格,将参数列表的开头和结尾与周围的圆括号分开。
  • if/else if 和参数括号之间有一个空格,但函数名和参数括号之间没有空格。

有没有办法将此样式设置为 VIM 中的默认样式,并让重新缩进命令更改样式以匹配我提供的两者中的后者? I've found tools to enforce things like line endings, tabs-vs-spaces, etc, 但不是上面显示的样式细节。

谢谢。

【问题讨论】:

    标签: vim coding-style vim-plugin


    【解决方案1】:

    vim 中的缩进脚本不是为如此复杂的任务而构建的。我建议您使用indent 命令,尤其是以下参数:

    -prs, --space-after-parentheses
    Put a space after every '(' and before every ')'.
    See STATEMENTS.
    -sai, --space-after-if
    Put a space after each if.
    See STATEMENTS.
    

    您应该阅读命令的手册页以了解更多详细信息。

    显然,此命令可用于过滤缓冲区的内容:

    :%!indent
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-16
      • 1970-01-01
      • 1970-01-01
      • 2022-08-10
      相关资源
      最近更新 更多