当 clion 不理解您的代码并将其重新格式化为错误时,如何键入右括号`}`?

How to type a close brace `}` when clion doesn't understand your code and reformats it wrong?

我有一些代码可以正常编译,但我为 else 输入右大括号 },它将所有代码从 else { 一直移到左侧并丢弃所有缩进.

    if (some_condition) { 
        some_real_code();
    } else { 
        obj.some(stuff);
        obj(some,other(stuff));    

当我输入最后一个 } 时,我得到:

    if (some_condition) { 
        some_real_code();
    } else { 
obj.
some(stuff);
obj(
some, 
other(stuff));
}

当它发生时,我发现处理这个问题的唯一方法是 select 在我的代码中添加一个大括号,将其复制到我的剪贴板,然后右键单击 "paste simple" clion,它不进行任何重新格式化。

有没有更好的方法?例如,a phone,如果它自动更正你,而你删除自动更正的词并再次重新输入相同的词,它不会重新自动更正你,因为它认为你在执行它时实际上知道你的意思第二次。

谢谢。

编辑:我并不是说 clion 不好或不理解我的代码是错误的,因为在我的真实代码中我使用了它不声称支持的语言功能。我只是在寻找如何解决它相当缺乏支持的问题。

请关闭"Reformat block on typing '}'":

似乎您会对受保护块中的 for-IDE-stub implementation 感兴趣(Per-ide 变量:在 CLion 中它是 CLION_IDE ,在 AppCode 中 – APPCODE_IDE ,在 Android 工作室 – STUDIO_IDE)

我不会关闭自动格式设置,因为在大多数情况下它很有用。但是当这种不需要的自动格式化发生时,我只是做了以下解决方法:

  1. 取消自动格式化(Ctrl+Z)。大括号也取消了。
  2. 我没有直接输入 },而是输入注释://}.
  3. 然后取消注释这一行(Ctrl+/ 或删除斜线)。

赚了! :)