Vim autocmd(保存文件,运行代码格式化程序,重新加载文件)

时间:2012-03-20 07:36:49

标签: vim uncrustify

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

  1. 格式化我当前正在编辑的代码(即按下gq时)。
  2. 保存文件时格式化代码,然后将格式化文件重新加载到当前Vim窗口。
  3. 选项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。

1 个答案:

答案 0 :(得分:4)

您是否尝试过转义空格:

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

<强>更新

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

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

gq在线上运行,因此您可以在可视模式下选择必要的行并执行gq。例如,如果要重新格式化整个文件执行ggVGgq

:help gq

的更多信息