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

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

例如,渲染:

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

进入

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

答案1

您可以安装阿斯泰尔并让它为你工作。在 vim 中,你可以选择一个代码块并执行:

:'<,'>!astyle

(当您按下冒号时,会为您添加 '<,'>。)

这会将您选择的文本替换为 astyle 美化后的版本。

答案2

这是适用于 Windows 还是 Linux?由于这是一个 vim 问题,我假设是 Linux,尽管 vim 适用于 Windows。

indent程序可能已经安装在你的 Linux 机器上,因此不需要额外安装。与 ngm 的答案类似,你可以使用

:'<,'>!indent -

或者

!Gindent -

美化代码块或从当前位置到文件末尾的所有代码。请确保在该命令末尾包含“-”

请参阅缩进的手册页以man indent了解大量的格式化选项。

答案3

单行:

:setfiletype sh|%s/{/{^M/g|%s/}/^M}/g|%s/;/;^M/g|normal ggVG=

细分:设置文件类型,以便 vim 知道它正在使用的语法(在本例中为 shell 脚本):

:setfiletype sh  

在“{”字符之后和“}”字符之前插入换行符(输入CTRL-V回车键以获取文字换行符):

:%s/{/{^M/g
:%s/}/^M}/g

在“;”字符后插入换行符:

:%s/;/;^M/g

与在正常模式下输入 ggVG= 相同:
'gg' = 转到顶部,'V' = 可视选择行,'G' 转到底部,'=' = 自动格式化:

:normal ggVG=

这非常简单,在很多情况下都会失败,例如如果字符串文字中有“;”。但它应该使代码更具可读性。

答案4

使用vim 自动格式化自动集成外部格式化程序(例如,用于 c 类语言的 clang-format 和 astyle)并通过一键按下来运行它们。

相关内容