Линейный ввод Java Shell в Windows - PullRequest
0 голосов
/ 22 мая 2018

Строковый ввод Java Shell REPL в Windows не ведет себя так, как строковый ввод в большинстве других консольных приложений Windows:

  1. Сочетание клавиш Ctrl + Стрелка влево не приводит к началупредыдущая строка.
  2. Символом конца файла является Ctrl + D (как в Unix) вместо Ctrl + Z.
  3. Курсор исчезает при прокрутке с помощью горизонтальных клавиш со стрелками.
  4. При наборе текста наблюдается небольшая задержка (около 0,1 с), пока не появится каждая набранная буква.

Это происходит как с Java 9, так и с 10. В отличие от этого, REPL Kotlin не показывает этогостранное поведениеТакже не используются методы Java BufferedReader.readLine() или Scanner.nextLine() при использовании System.in или System.console().readLine().

Мои вопросы:

  • Почему Java Shell использует этовид строки ввода?(Я имею в виду, дает ли это какое-то конкретное преимущество, чтобы компенсировать его трудность в использовании?)

  • Существует ли конфигурация, позволяющая ему использовать обычный метод пользовательского ввода?

  • Какой метод Java API используется для чтения пользовательского ввода (просто я могу помнить, что не использовал его сам)?

1 Ответ

0 голосов
/ 19 декабря 2018

Инструмент JShell использует JLine для редактирования строки.Таким образом, он ведет себя одинаково, используется ли он на Windows, Mac или Linux.Например, нажатия клавиш ctrl-b и ctrl-f перемещают курсор вперед и назад.

Одним из преимуществ является то, что он дает вам настраиваемые нажатия клавиш (в основном, завершение табуляции и некоторые другие вещи).Вы можете получить список этих нажатий клавиш, используя следующую команду:

/help shortcuts

Недостатки указаны в OP.Я не думаю, что можно изменить REPL, чтобы использовать другой метод ввода строки.

...