我在 Windows 7 上使用SBT 0.13.6,并使用 Cygwin (bash shell) 运行它。我的箭头键有问题:箭头向上移动光标,而我希望它在命令历史记录中循环(我认为这是默认情况下应该做的)。
问题似乎是终端上打印的内容。当我按下:[向上箭头] [回车] 时,它会执行上一个命令。但是我在终端看到的是光标向上移动了一行,回车后打印上一条命令并执行。
当然,它应该在我点击向上箭头后立即打印上一个命令,并且它不应该移动光标(至少不垂直移动)
SBT 中的命令行由JLine 2处理。在跟踪模式下运行 JLine 我可以看到它确实可以识别按键,并且已将向上箭头映射到“以前的历史记录”,但终端没有正确更新。
我还有一个问题,我必须手动插入一个行尾字符才能输入命令,通过在我的 SBT 启动脚本中添加以下选项来解决这个问题:
-Djline.terminal=unix
我也尝试过其他选项(win、auto、off 等)。我已将以下几行放在我的主目录中的文件 jline.inputrc 中,但它没有帮助:
"\e[A": previous-history
"\e[B": next-history
事实上,我认为它没有帮助,因为我可以看到按键被正确识别并映射到正确的命令。
该行为不取决于我使用的箭头键(数字键盘上的箭头键与否)。
一种解决方法是直接从 Windows 命令外壳 (cmd.exe) 运行 SBT。
有谁知道解决这个问题的方法,以便命令历史循环在 Cygwin 中按预期工作?