Eclipse 中的撤消操作是否损坏/存在错误?

Eclipse 中的撤消操作是否损坏/存在错误?

我在互联网上找不到任何关于 Eclipse 的撤销功能被破坏/垃圾的信息,所以也许这只是我的感觉。不过,我想在这里问一下,看看是否有其他人经历过类似的烦恼和/或知道解决办法。

最常见的情况是我写一行代码,说:

System.out.println(someString);

写完后,someString我按下回车键,这通常会将我带到行尾/println 参数括号之外。但是,如果我不知何故丢失了参数周围的特殊框突出显示(例如按escape),则回车键将在结束括号之前给我一个新行。如果我现在用Ctrl-Z这个撤消,将撤消换行符整个单词(someString在本例中)。我现在可以选择重做然后手动删除换行符,或者再次输入行的剩余部分。撤消通常跨越保存,这对我来说没有意义。您可能会认为,当您保存、进行更改然后撤消时,您将不会返回到保存点。然而,事实并非如此。这些小小的不便经常发生,我可能更喜欢一次撤消一个字符,就像 Emacs 风格一样。有人知道这是否可行吗?

不太常见的情况是更不方便的情况,看起来更像是一个实际的错误。有时我会对我的代码进行一些更改。在调试模式下运行它并尝试使用界面(通常在浏览器中)。然后 10-20 分钟后,例如,我在某个地方输入时遇到断点(比如写一封电子邮件),Eclipse 跳起来并窃取焦点,我不小心在代码中输入了一些内容。现在,当我撤消时,Eclipse 通常决定不仅撤消我刚刚所做的更改,而且还撤消我 10-20 分钟(有时甚至更久)前所做的一些更改。这肯定发生在别人身上吧?在我看来,唯一“安全”的做法是最后一次revert保存,因为您可能不知道您意外更改了什么,撤消会将您带回到上次保存之前,丢失一些随机代码(如果在 Eclipse 窃取焦点时选择了某些内容,意外输入可能还会删除代码)。

所以,这是一篇相当长的长篇大论。我只是想听听其他人是否也遇到过这种情况,是否觉得很沮丧,或者是否有解决办法 :)

答案1

我刚刚创建了一个新的 Java 类:

public class TestUndo {
    public static void main(String[] args) {
        |
    }
}

然后放

System.out.println("Hello world");<enter>

在 的位置|- 并且没有任何拼写错误或其他错误,按下将按ctrl-z顺序删除以下内容:

  • 首先删除;
  • 然后是括号里的内容"Hello world"
  • 然后()
  • 然后println
  • 然后.但选择out
  • 然后System.out

这似乎很合乎逻辑,因为它按语法组分组,我又回到了开始的地方。请注意,这都是在 Eclipse 3.7.1 中;YMMV。

但是,如果我在打字过程中任何时候输入错误System.out.println("Hello world");或者使用任何光标键或退格键,都会重置撤消状态,稍后当您反复按下时ctrl-z,您将跳回到每个输入错误 - 因此,不稳定的撤消行为可能是由打字时移动引起的。

Eclipse 错误邮件中列出了一个错误,描述了这种“损坏”的行为: https://bugs.eclipse.org/bugs/show_bug.cgi?id=49553

并建议进行修补;但是,它被标记为“已分配”,但从未进入任何发布版本,那是在 2006 年,因此这种情况不太可能很快改变。

另一种方法ctrl-z是使用 Eclipse 的“本地历史记录”功能 - 右键单击​​文件并“比较”->“本地历史记录” - 然后您就可以直观地看到对文件所做的最近更改的差异。

(作为最后的“修复”,你说你希望使用 Eclipse 中的 Emacs kill-ring 功能 -http://www.mulgasoft.com/似乎提供了一些 Eclipse 扩展,使其行为更像 Emacs - 所以你可以尝试一下;就我个人而言,我只使用带有 CEDET 的 Emacs!)

相关内容