Windows 上的 Java Shell 行输入



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

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

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

我的问题:

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

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

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

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

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

/help shortcuts

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

最新更新