Clang Format配置:如何在std::unique_ptr与尖括号<之间添加空格
Clang Format配置:如何在std::unique_ptr与尖括号<之间添加空格
嘿,我太懂你纠结代码格式的心情了!你就是想把代码里的
std::unique_ptr<boost::thread> my_thread;
改成
std::unique_ptr <boost::thread> my_thread;
也就是在std::unique_ptr和后面的左尖括号<之间加个空格对吧?
你提到试了SpaceAfterTemplateKeyword: true但没用,这很正常——这个配置本来就是管template关键字后面的空格的,比如把template<T>改成template <T>,对std::unique_ptr这种已经是实例化模板的类型名和尖括号的关系完全不搭边,所以肯定起不了作用。
而且你说找了其他SpaceBefore或者SpaceAfter系列的选项也没效果,这其实是因为目前Clang-Format的官方配置里,根本没有专门针对“模板类型名和左尖括号之间加空格”的开关,那些现成的空格配置项都覆盖不到这个场景。
如果实在要实现这个格式要求,你可以试试用Clang-Format的RegexReplace自定义替换规则。举个例子,在你的.clang-format配置文件里加一段这样的内容:
RegexReplace: - Regex: '(std::unique_ptr)(<)' Replacement: '$1 $2'
这个规则会精准匹配std::unique_ptr紧跟左尖括号的情况,把它们替换成带空格的版本。不过要注意,正则的范围别太宽,不然可能会误替换其他不需要的代码(比如函数模板的template<>或者其他你不想改的尖括号场景)。
最后要提醒一句,这属于自定义的临时解决方案,不是官方原生支持的配置方式,使用前记得多测试几遍,确保不会破坏其他代码的格式哦~
备注:内容来源于stack exchange,提问作者xinthose
相关产品推荐
相关产品推荐

