Clang Format命令行调用时遇到的小坑(vim)

 
Category: Tips

写在前面

最近开始用neovim作为IDE了, 虽然参考了大佬的配置, 自己也学会了一些Lua语言的配置方法, 但是还是难免遇到一些奇奇怪怪的玄学问题, 不过,最终还是解决了.

问题描述:

在vim调用``clang-format`时候, 总是不会正常的进行格式化, 也没有任何报错.格式化的代码如下(通过命令行进行调用)

  clang-format -style='{BasedOnStyle: Google, IndentWidth: 4, SortIncludes: false, AccessModifierOffset: -4, ContinuationIndentWidth: 4, AlignAfterOpenBracket: true, AlignOperands: true, AlignTrailingComments: true, MaxEmptyLinesToKeep: 2, SpacesBeforeTrailingComments: 1, KeepEmptyLinesAtTheStartOfBlocks: true, AllowShortBlocksOnASingleLine:true}' test.cpp

解决方法

乍一看是没有任何问题的, 就是格式化套用指定格式, 但是通过终端运行时候会出现:

<command-line>:1:320: error: Found unexpected ':' while scanning a plain scalar
{BasedOnStyle: Google, IndentWidth: 4, SortIncludes: false, AccessModifierOffset: -4, ContinuationIndentWidth: 4, AlignAfterOpenBracket: true, AlignOperands: true, AlignTrailingComments: true, MaxEmptyLinesToKeep: 2, SpacesBeforeTrailingComments: 1, KeepEmptyLinesAtTheStartOfBlocks: true, AllowShortBlocksOnASingleLine:true}

这也就找到了问题所在, 在格式化选项指定的时候, 值前面的冒号不能不加空格! 就是这个问题使得vim调用时候补全失败, 但是vim又不会报错(因为是通过efm调用)..

改成下面这样, 就完美了:

clang-format -style='{BasedOnStyle: Google, IndentWidth: 4, SortIncludes: false, AccessModifierOffset: -4, ContinuationIndentWidth: 4, AlignAfterOpenBracket: true, AlignOperands: true, AlignTrailingComments: true, MaxEmptyLinesToKeep: 2, SpacesBeforeTrailingComments: 1, KeepEmptyLinesAtTheStartOfBlocks: true, AllowShortBlocksOnASingleLine: true}'