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

  • 格式化我当前正在编辑的代码(即按gq时)。
  • 保存文件时格式化代码,然后将格式化的文件重新加载到当前的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中。

    最佳答案

    您是否尝试过转义空格:
    :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/nullgq在行上操作,因此您可以在可视模式下选择必要的行并执行gq。例如,如果要重新格式化整个文件,请执行ggVGgq

    有关更多信息,请访问:help gq

    10-05 23:59