如何使用 Vim 格式化来自网络的代码?

xzh*_*zhu 4 vim

例如,要渲染:

while (head == tail) { head++; a[head] = 0 }
Run Code Online (Sandbox Code Playgroud)

进入

while (head == tail)
{
    head++;
    a[head] = 0
}
Run Code Online (Sandbox Code Playgroud)

Col*_*son 7

(首先,您需要在最后一个分号前加一个分号},才能使 C 成为有效;分号应被视为 C 中的终止语句,而不是分隔语句。除非您添加该分号,否则智能自动缩进可能无法正常工作。 )

Vim 的=命令 ( :help =) 可用于通过自动缩进程序运行代码,但它需要一些配置。基本思想是将equalprg选项 ( :help 'equalprg')设置为应用所需缩进的程序,然后=在命令模式下使用它来运行它。 =像其他基于 Vim 运动的命令一样工作d,例如和y;例如,==缩进当前行,=ap缩进一个段落,或者您可以使用可视范围:ggVG=缩进整个文件。

现在,默认情况下,equalprg设置为空字符串,它只执行 Vim 内置的基本每行缩进。要做你要求的那种事情,最好的工作工具是indent

缩进 安装缩进

indent为各种缩进样式提供了大量选项;默认情况下,它使用 GNU 编码风格,但您可能希望对其进行自定义以适合您的项目偏好。有关详细信息,请参阅 man indent。要在 的值中包含空格equalprg,您需要用反斜杠引用它们,例如,如果您想使用 K&R 缩进样式,您可以使用:set equalprg=indent\ -kr.

你也可以有“=”命令选择合适的压痕基于文件类型,通过使用:filetype indent on-型:help filetypeVIM中获取更多信息。

:set autoindent将告诉 vim 在您键入时缩进。将这些命令中的任何一个(减去前导的 ':')添加到您的 ~/.vimrc 文件将使它们永久化。