3

Emacs“paredit”模式的一个很棒的特性之一是可以与 Lisp 类似以及其他语言(如 Java/Scala)一起使用,它可以直接按 Ctrl-k(杀死),它会巧妙地删除文本,直到合适的分隔符,可以是右引号,也可以是右大括号/括号/方括号。它基本上会删除一些东西,同时仍然保持你的代码在语法上有效,即它会删除正确数量的右括号/大括号等。

Intellij IDEA 中是否有这样的操作或键盘快捷键?或者我将如何定义一个宏来做到这一点?

4

1 回答 1

0

我有一个几乎可行的解决方案:记录宏序列(Mac 键绑定):

  1. 展开选择(Alt Up)
  2. 展开选择(Alt Up)
  3. 向右选择(Shift RightArrow)
  4. 剪切选择(Cmd X)

然后我将此宏绑定到 Ctrl-K。它工作得很好,例如(垂直条是调用它时的插入符号位置):

List( "first", "second", "third |string", "fourth") => List( "first", "second", "third ", "fourth")
{100, 200, {300|, 400, 500}, 20} => {100, 200, {300}, 20}

不完全按照我想要的方式工作的情况是当我使用括号时:

(1, 2, (3, |4, 5), 6, 7, 8) => (1, 2, (3, , 6, 7, 8)

请注意,它删除了封闭的右括号,这是因为 Expand-Selection 包含封闭的括号。如果封闭表达式是字符串或有大括号,则 Expand-Selection 不包括右侧引号或大括号。

如果我知道如何在不包含括号的情况下进行扩展选择,那么这将是完美的,但我可以接受我现在所拥有的。

于 2014-11-05T03:00:51.870 回答