我对Linux / Bash不太熟悉,所以我找不到合适的搜索条件。
摘下片段:
public class Main {
public static void main(String[] args) {
java.util.Scanner keyboard = new java.util.Scanner(System.in);
while(true) {
System.out.print("$ ");
String in = keyboard.nextLine();
if(in.equals("q")) break;
System.out.println(" "+in);
}
}
}
如果我使用Bash在我的Linux机器上运行它,我就不能使用任何箭头按钮(我只对left
- 和right
按钮,btw感兴趣。例如,如果我输入“test”然后按左按钮尝试返回,则显示^[[D
而不是我的光标返回一个位置:
$ test^[[D
我也尝试过较新的Console类,但最终结果是一样的。在Windows cmd.exe
shell上,我没有这个问题。
所以,问题是:有没有办法改变我的Java代码,以便我可以使用箭头键而不用Bash转换它们像^[[D
这样的序列,但实际上移动光标呢?
我希望我能在“编程水平”上解决这个问题。如果这是不可能的,那么我想我最好在Superuser上试试运气,看看我的Bash控制台上是否需要更改。
提前致谢。
答案 0 :(得分:3)
Bash是shell,而不是终端;从您的程序中,您正在与终端通话。为了提供该功能,bash和许多其他程序使用readline - 它似乎有Java wrapper但我从未使用过它。我相信其他人会得到一个更确定的答案。
答案 1 :(得分:2)
另一种选择是Java curses library。