1

我有几个 C 文件,其中行超过 80 列。我需要将它们包装到 80 列边界,同时保持正确的 C 语法。这在 Vim 中可行吗?

我在网上看到了几种在普通文本文件上执行此操作的解决方案。此外,还发现了在即将被编辑的 C 文件中进行包装的技巧。但不适用于现有的 C 文件。

除了 Vim 之外,任何实现此目的的工具也都受到欢迎。

4

2 回答 2

3

如果您编辑 c-sources,很可能您设置了 cindent 选项。不幸的是 textwidth 选项不适用于 cindent。

为了您的艺术风格,虽然它是一个非常好的程序,但也不推荐,因为它不支持长行的中断。

为了得到你想要的,我使用 gnu indent 并将 equalprg 设置为

let &equalprg= "indent -l80 -i" . &shiftwidth . " <optional args>"

并添加

map <leader>i mzgg=G`z

到我的~/.vimrc. 按下<leader>i重新格式化整个文件而不改变光标的位置。

另一种可能性是添加一个自动命令,在每次写入时缩进源代码,例如

autocmd BufWrite *.c execute "%!".&equalprg
于 2013-01-23T09:31:29.300 回答
2

使用 vim 你可以使用:set tw=79and来做到这一点gggqG。但是,它不是上下文感知的,因此您需要恢复某些行(例如,其中包含长字符串的行)。

对于外部工具,您可能需要查看Artistic Style,它重新格式化不难重新格式化的行(例如,包含 a 的行{)。

于 2013-01-23T08:36:47.393 回答