VIM - 重新格式化缩进和大括号

最后发布: 2015-06-10 18:07:11


问题

在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和functions的参数有一个空格,将参数列表的开头和结尾与周围的圆括号分开。
  • if / else if和参数括号之间有空格,但函数名和参数括号之间if空格。

有没有办法将此样式设置为VIM中的默认样式,并且还有重新缩进命令更改样式以匹配我提供的两个样式中的后者? 我找到了一些工具来强制执行诸如行结尾,制表符和空格等内容,但不是上面显示的样式细节。

谢谢。

vim coding-style vim-plugin
回答

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