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

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

例如,渲染:

while (head == tail) { head++; a[head] = 0 }

进入

while (head == tail)
{
    head++;
    a[head] = 0
}

答案1

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

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

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

缩进 安装缩进

indent拥有大量各种缩进样式的选项;默认情况下,它使用 GNU 编码样式,但您可能希望对其进行自定义以适合您的项目偏好。请参阅 男人缩进了解详情。若要在 的值中包含空格equalprg,您需要用反斜杠将其括起来,因此例如如果您想使用 K&R 缩进样式,则可以使用:set equalprg=indent\ -kr

您还可以让 '=' 命令根据文件类型选择适当的缩进,通过在 vim 中使用:filetype indent on- 类型:help filetype来获取更多信息。

:set autoindent将告诉 vim 在您输入时缩进。将这两个命令之一(减去开头的“:”)添加到您的 ~/.vimrc 文件将使它们永久生效。

答案2

此 vim 插件使用外部格式化程序来格式化 vim 中的代码。因此,它比 vim 的缩进机制更强大。

GitHub 上的 vim-autoformat

答案3

与任何其他文本编辑器一样,VIM 不会自动执行此操作。

用 vim 打开一个文件,按下i插入,现在你就可以自由编辑了,完成后按下Esc退出插入模式,然后按下 写入 写入:wq,退出。

相关内容