如何在vim中自动格式化(而不仅仅是自动缩进)?

3
有没有办法让gVim自动格式化我的(c#)代码?我不仅仅是在谈论缩进,而是实际上的格式化。
比如改变:
public void Program() {
    ...
}

to

public void Program ()
{
    ...
}

同时也可以反过来实现。无论是宏、插件还是其他方式(formatexpr?)。

我正在尝试模仿Visual Studio的格式。我希望输入}后一切看起来都很好。


你可以在可视模式下选择一堆行,然后使用':<,'>!indent'(带有适当的参数)进行缩进。不确定GNU indent对C#有多大用处。 - cdleonard
我猜indent是一个cmdline工具?我不认为我在我的(windows)机器上有它。(添加了windows标签) - dvdvorle
2个回答

1

Vim没有本地的方法来实现这个。但是你可能会对AStyle感兴趣,它有许多选项

astyle --help会告诉你有哪些选项可用。许多预设都可以使用。

在vim中,你可以使用:%!command过滤文档,其中command接收stdin中的当前缓冲区;当前缓冲区将被替换为您的命令的输出。如果该命令不从stdin读取,而是需要一个文件名作为参数,则使用%

因此:

:%!C:\astyle\bin\astyle.exe -A1

只要你用正确的路径替换它,就可以做到这一点。


0

gq 命令可以格式化代码。如果您不满意标准格式规则 (:help formatexpr),我猜您可以使用自己的代码格式化程序(通过 formatprg)。 要缩进 C(或类似语言),您还可以阅读有关 vim 本地 c-indent 的信息,:help C-indenting。cindent 方法应该能够实现您想要的功能。


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