IntelliJ自动完成转义

时间:2009-10-27 15:46:49

标签: autocomplete intellij-idea

我正在尝试IntelliJ并且有一个小麻烦,我无法弄清楚IntelliJ中是否有可能的解决方案。在Eclipse甚至TextMate(以及许多其他具有自动完成功能的编辑器)中,如果您处于自动完成部分(如字符串或括号区域)的中间,则可以按Enter或Tab键以到达该部分的末尾。例如:

if (blah.equals(something.toString()))

插入符号位于toString部分的括号中间。在IntelliJ中,您可以通过这些括号输入没有问题,或者您可以点击“结束”键以结束它。一个是轻微的烦恼,另一个是更烦人,因为我必须把我的手从主排。在eclipse中,我可以点击Enter键,它会让我离开这个... TextMate,Tab。

是否有我可以调整的设置或我可以做的事情,以便在IntelliJ中提供类似的功能?

4 个答案:

答案 0 :(得分:6)

在这种情况下,如果你按CrabCoder建议的那样按 Ctrl-Shift-Enter ,你会得到这种行为。它将添加大括号并将光标放在下一行。您也可以按 Shift-Enter ,这将使您进入下一行,并对代码做出较少的假设。 Ctrl-Shift-Enter 的行为会有所不同,具体取决于它所查看的代码,因此不会给您一致的行为。例如,在字符串的中间,它将您放在行的末尾并添加一个分号。

似乎结束是这里的首选键,以到达行的末尾。你可以在键映射中添加一个额外的键来转到行的末尾,如果一个不同的键组合对你来说效果更好,但它不会改变它的行为,因为你在括号的中间。

查看IDEA选项,似乎括号行为实际上不是像自动创建for循环那样的实时模板,所以当你完成时你不会标记出来,而只是自动完成括号你,并且聪明地认识到你可能想要流畅地输入,就像它没有那样。

答案 1 :(得分:5)

我试过 cmd-shift-enter (在mac上),结果对我来说似乎更有用(在javascript代码中)。我正在使用管道('|')来显示光标:

之前:

var x = func1(func2(|))
按下cmd-shift-enter后

var x = func1(func2());|

所以它甚至在行的末尾添加了分号(但你仍然需要再次按回车键跳转到下一行)。

修改

刚刚发现这个快捷方式更有用:

之前:

if(a == b|)

cmd-shift-enter

if(a == b) {
    |
}

适用于php和javascript

答案 2 :(得分:1)

由于这些答案有点陈旧,我不知道是否有人知道您可以通过输入 Shift + KEY <离开随附的自动填写的字段/ KBD>

在Java中,如果你做了System.out.println(&#34; Hello World!&#34;); 如果你的光标位于&#34;&#34;, Shift + &#34; 会让你超出&#34;&#34;和 Shift + 会让你超越()

答案 3 :(得分:0)

目前Intellij不支持。在http://youtrack.jetbrains.com/issue/IDEA-74666处有一项开放功能请求。额外的投票会很好。