代码之家  ›  专栏  ›  技术社区  ›  DodgyCodeException

Windows上的Java Shell行输入

  •  0
  • DodgyCodeException  · 技术社区  · 6 年前

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

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

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

    我的问题:

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

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

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

    1 回复  |  直到 6 年前
        1
  •  0
  •   Klitos Kyriacou    6 年前

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

    它的一个优点是为您提供定制的击键(主要是制表符完成和其他一些事情)。可以使用以下命令获取这些击键的列表:

    /help shortcuts
    

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