我有几个 C 文件,其中行超过 80 列。我需要将它们包装到 80 列边界,同时保持正确的 C 语法。这在 Vim 中可行吗?
我在网上看到了几种在普通文本文件上执行此操作的解决方案。此外,还发现了在即将被编辑的 C 文件中进行包装的技巧。但不适用于现有的 C 文件。
除了 Vim 之外,任何实现此目的的工具也都受到欢迎。
我有几个 C 文件,其中行超过 80 列。我需要将它们包装到 80 列边界,同时保持正确的 C 语法。这在 Vim 中可行吗?
我在网上看到了几种在普通文本文件上执行此操作的解决方案。此外,还发现了在即将被编辑的 C 文件中进行包装的技巧。但不适用于现有的 C 文件。
除了 Vim 之外,任何实现此目的的工具也都受到欢迎。
如果您编辑 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
使用 vim 你可以使用:set tw=79
and来做到这一点gggqG
。但是,它不是上下文感知的,因此您需要恢复某些行(例如,其中包含长字符串的行)。
对于外部工具,您可能需要查看Artistic Style,它重新格式化不难重新格式化的行(例如,包含 a 的行{
)。