clang-format -style=file 在 Ubuntu 18.04 中不起作用
clang-format -style=file not working in Ubuntu 18.04
我在 Ubuntu 18.04 上使用 clang-format 9.
我已阅读 clang-format 文档,其中写道:
clang-format supports two ways to provide custom style options: directly specify style configuration in the -style= command line option or use -style=file and put style configuration in the .clang-format or _clang-format file in the project directory.
When using -style=file, clang-format for each input file will try to find the .clang-format file located in the closest parent directory of the input file. When the standard input is used, the search is started from the current directory.
无论我如何创建 .clang_format
文件(我已经尝试使用 clang-format -style=google -dump-config > .clang_format
)或我将它放在哪里,如果我执行 clang-format -style=file <file>
它不会格式化任何东西。
有人遇到同样的问题吗?
例如,如果我有一个文件 hello.cpp
:
#include <stdio>
std::string s=" VERY BAD"
"FORMATTING";
int main() {
std::cout<< "Hello world!"<<'\n';
return 0;
}
如果我运行:
$ clang-format -style=mozilla -dump-config > .clang_format
即使我不编辑 .clang_format
文件,
$ clang-format -style=file hello.cpp
我得到了默认的 LLVM 格式化样式,而不是 Mozilla 样式:
#include <stdio>
std::string s = " VERY BAD"
"FORMATTING";
int main() {
std::cout << "Hello world!" << '\n';
return 0;
}
但是如果我 运行 $ clang-format -style=mozilla hello.cpp
那么我得到
#include <stdio>
std::string s = " VERY BAD"
"FORMATTING";
int
main()
{
std::cout << "Hello world!" << '\n';
return 0;
}
如果我将之前生成的 .clang_format
移动到 hello.cpp
目录的父目录中,也会发生同样的情况。
我什么都试过了,但似乎我必须坚持使用预配置的样式。
有人遇到同样的问题吗?
我可以从 clang-format 获取某种日志记录吗?
解决方案:
文件名必须是.clang-format
,不是.clang_format
!
clang-format -i <file>
如果您将 .clang-format 文件放在项目根目录下就足够了。 -i
代表到位。您粘贴的命令应该将格式化文件输出到标准输出。原因是默认情况下 clang-format 不会更改您的文件。起初对于格式化程序来说似乎很奇怪,但在我看来,这是一个很好的安全预防措施。
我正在创建一个名称错误的配置文件。
必须命名为.clang-format
,而不是.clang_format
。
我在 Ubuntu 18.04 上使用 clang-format 9.
我已阅读 clang-format 文档,其中写道:
clang-format supports two ways to provide custom style options: directly specify style configuration in the -style= command line option or use -style=file and put style configuration in the .clang-format or _clang-format file in the project directory.
When using -style=file, clang-format for each input file will try to find the .clang-format file located in the closest parent directory of the input file. When the standard input is used, the search is started from the current directory.
无论我如何创建 .clang_format
文件(我已经尝试使用 clang-format -style=google -dump-config > .clang_format
)或我将它放在哪里,如果我执行 clang-format -style=file <file>
它不会格式化任何东西。
有人遇到同样的问题吗?
例如,如果我有一个文件 hello.cpp
:
#include <stdio>
std::string s=" VERY BAD"
"FORMATTING";
int main() {
std::cout<< "Hello world!"<<'\n';
return 0;
}
如果我运行:
$ clang-format -style=mozilla -dump-config > .clang_format
即使我不编辑 .clang_format
文件,
$ clang-format -style=file hello.cpp
我得到了默认的 LLVM 格式化样式,而不是 Mozilla 样式:
#include <stdio>
std::string s = " VERY BAD"
"FORMATTING";
int main() {
std::cout << "Hello world!" << '\n';
return 0;
}
但是如果我 运行 $ clang-format -style=mozilla hello.cpp
那么我得到
#include <stdio>
std::string s = " VERY BAD"
"FORMATTING";
int
main()
{
std::cout << "Hello world!" << '\n';
return 0;
}
如果我将之前生成的 .clang_format
移动到 hello.cpp
目录的父目录中,也会发生同样的情况。
我什么都试过了,但似乎我必须坚持使用预配置的样式。
有人遇到同样的问题吗?
我可以从 clang-format 获取某种日志记录吗?
解决方案:
文件名必须是.clang-format
,不是.clang_format
!
clang-format -i <file>
如果您将 .clang-format 文件放在项目根目录下就足够了。 -i
代表到位。您粘贴的命令应该将格式化文件输出到标准输出。原因是默认情况下 clang-format 不会更改您的文件。起初对于格式化程序来说似乎很奇怪,但在我看来,这是一个很好的安全预防措施。
我正在创建一个名称错误的配置文件。
必须命名为.clang-format
,而不是.clang_format
。