VIM - 重排缩进和大括号格式

5
当在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的默认样式,并且重新缩进命令可以更改样式以匹配我提供的后两个样式?我已经找到了一些工具来强制执行诸如行结尾、制表符与空格等内容, 但没有像上面所示的样式细节。
谢谢。
1个回答

5
在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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接