7

我希望将源代码格式化程序Uncrustify与 Vim 集成。以下两个选项中的任何一个都足够了。

  1. 格式化我当前正在编辑的代码(即gq按下时)。
  2. 保存文件时格式化代码,然后将格式化的文件重新加载到当前的 Vim 窗口中。

选项 1 更可取。我试过了

set formatprg=uncrustify\ -c ~/misc/uncrustify.cfg --no-backup

即我用命令行选项调用Uncrustify。这不起作用。Vi 给出了E518: Unknown option: ~/misc/uncrustify.cfg错误。

对于选项 2,我在 vimrc 文件中尝试了以下内容

autocmd bufwritepost *.cpp ! ~/bin/uncrustify -c ~/misc/uncrustify.cfg --no-backup <afile>

文件在保存后被格式化,但我必须手动将文件重新加载到 Vim 中。

4

1 回答 1

4

您是否尝试过转义空格:

:set formatprg=uncrustify\ -c\ ~/misc/uncrustify.cfg\ --no-backup

更新

uncrustify将“Parsing: 170 bytes ...”消息打印到 stderr,因此我们需要将其重定向到/dev/null

:set formatprg=uncrustify\ -c\ ~/misc/uncrustify.cfg\ -l\ CPP\ --no-backup\ 2>/dev/null

gq对行进行操作,因此您可以在可视模式下选择必要的行并执行gq. 例如,如果要重新格式化整个文件,请执行ggVGgq.

更多信息在:help gq

于 2012-03-20T08:17:59.220 回答