当我在bash中运行jdb时,箭头键会产生奇怪的垃圾:
up: ^[[A
down: ^[[B
left: ^[[D
right: ^[[C所以我不能使用命令历史记录,也不能纠正拼写错误,因为我根本不能导航文本,这是非常恼人的。对此有解决方案吗?
Java版本信息:
"1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.5) (fedora-68.1.11.5.fc16-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)Bash版本信息:
GNU bash, version 4.2.28(1)-release (x86_64-redhat-linux-gnu)发布于 2014-07-27 13:26:27
根据Brian提出的使用JLine的建议,这个方法运行得相当好。
我终于可以使用up/down来浏览命令历史记录,但它有一些缺点,比如不支持ALT+DEL (删除最后一个单词)、CTRL+LEFT/RIGHT (将光标向后/向前移动一个单词)和CTRL+R (反向搜索过去的命令)。
然后我了解到JLine2正在提供这样的功能,所以我花了一些时间尝试一下。
这是一段相当痛苦的旅程,因为我目前使用的是OpenSUSE 12.3,我不会用所有的细节让你感到厌烦,但我会概述它们,以防你真的对此感兴趣,并发现自己不得不遵循类似的旅程:
<代码>E213>“时,有几个maven项目依赖项存在问题,我必须手动执行这些依赖项("maven-scm-api-1.5.jar“、"jansi-1.11.jar”和"bsh-2.0b4.jar")
解决了这些问题
在此之后,它工作得相当不错,我得到了JLine1错过的大部分好处,但不幸的是,jdb的">“提示符似乎在CTRL+向左/向右操作期间干扰了光标的移动,这是一种遗憾。
现在,我先输入CTRL+P,然后输入CTRL+N来解决这个问题(这似乎可以清除">“提示符,并使一切正常运行)
附注:我发现输入一个大而长的命令来使用jline运行jdb是很痛苦的,所以我发现通过这样的bash脚本运行jline2+jdb更好:
#!/bin/sh
#GI: This is a version of jdb that runs via jline, so that you can up/down through command history
# JLINE V1.0 METHOD
# =================
#/usr/local/jdk1.6.0_29/bin/java -classpath /usr/share/java/jline.jar:/usr/local/jdk1.6.0_29/lib/tools.jar jline.ConsoleRunner com.sun.tools.example.debug.tty.TTY $*
# JLINE V2.* METHOD
# =================
/usr/local/jdk1.6.0_29/bin/java -classpath /usr/share/java/jline.jar:/usr/local/jdk1.6.0_29/lib/tools.jar jline.console.internal.ConsoleRunner com.sun.tools.example.debug.tty.TTY $*例如,您可以使用更简单的命令通过jline+jdb运行您的程序:
jjdb.sh -classpath './*':'../lib/*' myprogram.MyMainClass好的,希望这对任何想要更多的人有所帮助。如果你需要我旅程的更多细节,请告诉我,我有相当详细的日志,但只是不想给读者带来太多细节的负担(除非事实证明你真的需要它!)
https://stackoverflow.com/questions/13877802
复制相似问题