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

Clo*_*oud 5 vim coding-style vim-plugin

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

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

if(something) {
  doFunction(something);
} else if(somethingElse) {
  doFunction(somethingElse);
} else {
  // default stuff to do
}
Run Code Online (Sandbox Code Playgroud)

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

if ( something ) {
  doFunction( something);
}
else if ( somethingElse )
{
  doFunction( somethingElse );
}
else
{
  // default stuff to do
}
Run Code Online (Sandbox Code Playgroud)

差异包括:

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

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

谢谢你。

Vit*_*tor 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.
Run Code Online (Sandbox Code Playgroud)

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

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

:%!indent
Run Code Online (Sandbox Code Playgroud)