Як змусити backspace \ 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 20090920-1017). Натомість відображається порожній квадрат, що позначає невідомий символ. Дивіться знімок екрана:

текст заміщення

Як змусити Eclipse правильно "відображати" зворотний простір? Тобто дозвольте йому видалити попередній символ.

Насправді це не showstopper, оскільки його буде просто запускати в командній консолі, але було б непогано змусити його працювати і в Eclipse :)


1
Я бачу ті самі симптоми у NetBeans
PMorganCA

Відповіді:


57

Помилка затьмарення # 76936. Я б не розраховував, що вони це виправлять, і жодних обхідних шляхів у списку немає.

Можливо, вам пощастить знайти плагін, який сприяє вдосконаленню консолі.


16
Див. Коментар № 24 - "... у команди налагоджувачів наразі немає часу / ресурсів для роботи над цим. Вклади були б вдячні ".
Стівен С

6
@BryanHunt, очевидно, не важливо для того, хто приймає рішення щодо того, що робити для наступної версії Eclipse. Мабуть, для вас це також недостатньо важливо.
Торбьорн Равн Андерсен

14
Я виправив помилку, вона повинна бути в 4,5 М4.
Філіп Маршалл,

2
@PhilippeMarschall Я не маю на меті зменшити вашу наполегливу працю, але, наскільки я можу зрозуміти, це, безсумнівно, не виправлено (за допомогою випуску Марса.) Друк символів зворотного простору для мене ніяк не впливає. Змінити: Здається, помилка справді з’явилася, див. Останні два записи у звіті про помилку, зв’язані у цій відповіді.
b1nary.atr0phy

1
Згідно bugs.eclipse.org/bugs/show_bug.cgi?id=76936 виправлення планується Затемнення 4.6 із цільовою датою випуску 22 червня 2016 ( projects.eclipse.org/projects/eclipse/releases/4.6.0 / план ). : /
simon

8

Щоправда, ви не можете використовувати backspace \ b для видалення відображеного прогресу, але ви можете видалити його, очистивши консоль за допомогою циклу, що викликає println. Звичайно, цей клуб не очистить ваш журнал!


"очищення консолі за допомогою ...." як саме? println () не може очистити вже надрукований рядок на консолі!
КНУ

1
Він може підштовхнути вже надрукований вивід вгору, щоб він вийшов із видимої області консолі, ефективно очищаючи консоль.
simon

3

Виправлено затьмарення Марса.

Зауважте, я б не використовував його для постійного оновлення, оскільки консоль eclipse відстає.


6
Незафіксовано в Neon.3 ( System.out.println("x\by")).
Матьє

3

Тепер вони це виправили, але за замовчуванням він відключений. Вам слід увімкнути це через Interpret ASCII control charactersналаштування консолі.


Це працювало в Eclipse IDE для розробників Java Версія: 2019-12 (4.14.0). Дякую
nessa.gp

-4

використання: System.out.print ("\ b") всередині циклу while, замість System.out.print ('\ b');

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.