0

Windows 上的 Java Shell REPL 行输入的行为方式与大多数其他 Windows 控制台应用程序中行输入的行为方式不同:

  1. Ctrl+向左箭头组合键不会转到上一行的开头。
  2. 文件结尾字符是 Ctrl+D(类似于 Unix)而不是 Ctrl+Z。
  3. 使用水平箭头键滚动时光标消失。
  4. 打字时有一个短暂的延迟(大约 0.1 秒),直到出现输入的每个字母。

Java 9 和 10 都会发生这种情况。相比之下,Kotlin REPL 没有表现出这种奇怪的行为。Java 的BufferedReader.readLine()orScanner.nextLine()方法在使用System.in, 或时也没有System.console().readLine()

我的问题:

  • 为什么 Java Shell 使用这种行输入?(我的意思是它是否提供了任何特殊的好处来弥补它更难使用?)

  • 是否有配置告诉它使用正常的用户输入方法?

  • 它使用什么 Java API 方法来读取用户输入(只是为了让我记得不要自己使用它)?

4

1 回答 1

0

JShell 工具使用JLine进行行编辑。因此,无论是在 Windows、Mac 还是 Linux 上使用,它的行为都是相同的。例如,ctrl-b 和 ctrl-f 击键可前后移动光标。

优点之一是它为您提供了自定义的击键(主要是选项卡完成和其他一些东西)。您可以使用以下命令获取这些击键的列表:

/help shortcuts

缺点如OP所述。我认为不可能将 REPL 更改为使用另一种行输入法。

于 2018-12-19T16:13:42.313 回答