如何让退格\ b在Eclipse的控制台中工作?


79

我正在创建一个小的Java应用程序,该应用程序应带有进度指示器。在每个循环中,它使用退格键\b删除显示的进度,然后再显示下一个百分比。

这是一个简化的示例:

public static void main(String[] args) throws Exception {
    System.out.print("Progress: ");
    for (int percentage = 0; percentage < 100; percentage++) {
        System.out.print(percentage + "%");
        Thread.sleep(10); // Stub for "long running task".
        int length = String.valueOf(percentage).length() + 1;
        while (length-- > 0) {
            System.out.print('\b');
        }
    }
    System.out.println("finished!");
}

这在命令提示符下可以很好地工作,但是在Eclipse的控制台(Galileo build 20090920-1017)中不能识别退格字符。相反,它显示一个表示未知字符的空正方形。看截图:

替代文字

如何使Eclipse正确“显示”退格键?即让它删除前一个字符。

实际上,这不是showstopper,因为它将仅在命令控制台中运行,但是也可以使其在Eclipse中正常工作也很不错:)


1
我在NetBeans中看到了相同的症状
PMorganCA,2013年

Answers:


57

Eclipse错误#76936。 我不会指望他们修复它,也没有列出解决方法。

您可能会幸运地找到一个可以提供更高级控制台的插件。


16
参见注释#24-“ ...调试团队目前没有时间/资源来解决这个问题。我们将不胜感激。
Stephen C

6
@BryanHunt显然对于决定下一版Eclipse的处理方式并不重要。显然,这对您也不重要。
托尔比约恩Ravn的安德森

14
我更正了错误,它应该在4.5 M4中。
Philippe Marschall 2014年

2
@PhilippeMarschall我并不是要减少您的辛苦工作,但据我所知,这肯定不是固定的(使用Mars版本。)打印退格字符对我没有影响。编辑:看来该错误确实已经浮出水面,请参见此答案中链接的错误报告中的最后两个条目。
b1nary.atr0phy

1
根据bugs.eclipse.org/bugs/show_bug.cgi?id=76936,该修复计划于Eclipse 4.6计划,目标发布日期为2016年6月22日(projects.eclipse.org/projects/eclipse/releases/4.6.0 / plan)。:/
simon 2015年

8

好吧,确实您不能使用Backspace \ b来删除显示的进度,但是可以通过调用println的循环清除控制台来删除它。当然,此kluge不会清除您的日志文件!


“用...清除控制台。”究竟是什么?println()无法清除控制台上已打印的行!
KNU

1
它可以将已经打印的输出向上推,使其脱离控制台的可见区域,从而有效地清除控制台。
simon 2015年

3

已修复,Eclipse火星。

请注意,由于eclipse控制台滞后,我不会使用它进行持续更新。


6
未在Neon.3(System.out.println("x\by"))中修复。
马修(Matthieu)

3

现在他们修复了它,但是默认情况下它是禁用的。您应该通过Interpret ASCII control characters在控制台首选项中启用它。


这适用于Java开发人员版本Eclipse IDE:2019-12(4.14.0)。谢谢
nessa.gp

-4

在while循环内使用:System.out.print(“ \ b”),而不是System.out.print('\ b');

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.