我最近升级了我的IDEA,现在使用IntelliJ IDEA 2022.2 Ultimate Edition。我发现Scala代码中的Complete Current Statement
的行为与Java代码中的不同,这非常烦人。x1c 0d1x
例如,在Java代码中:
public static void main(String[] args) {
String foo = "bar"
}
在第2行的任意位置按下Complete Current Statement
快捷键(shift+cmd+enter),将在行尾添加一个;
,并且也将应用自动缩进:
public static void main(String[] args) {
String foo = "bar";
}
然后再次按Complete Current Statement
将带您到一个新的行时,没有更多的调整。
public static void main(String[] args) {
String foo = "bar";
}
在以前版本的IntelliJ中,我大致记得Scala代码的行为是相同的。但是在这个版本的IntelliJ中,当我尝试在Scala代码中做同样的事情时,例如:
def foo (): Unit = {
throw new RuntimeException
}
当我在第2行按下Complete Current Statement
时,什么也没发生。
有没有人能帮我看看我为什么或者应该如何配置以与Java代码的行为保持一致?非常感谢!
1条答案
按热度按时间mepcadol1#
在Scala中不需要使用分号,因为分号是可选的,而且几乎从不使用。实际上,Scala代码示例已经是一个“完整的语句”。
对于格式化,我建议设置
File
-〉Settings
-〉Tools
-〉Actions on save
,并选中Reformat code
和可选的Optimize imports
,每当你使用Ctrl + S
保存源文件时,它都会同时执行这两项操作。Scala也有自己的格式化程序Scalafmt,它可以根据你的喜好设置不同的Scala特性,可以更好地控制它们的格式。这个格式化程序位于
Settings
-〉Editor
-〉Code Style
-〉Scala
。如果出于某种原因,您仍然希望使用快捷键,那么
Complete current statement
对Scala代码所能做的唯一事情就是自动缩进当前行,但由于某种原因,它没有这样做,因此这似乎是Intellij的一个bug。但您可以做的是替换Auto-Indent Lines
快捷键,使用您的Complete current statement
快捷键,并获得相同的行为。