根据 A. Webb 的建议,我将我的 github issue #79 for jline 作为答案发布。这适用于术语,但不适用于我的 SecureCrt。SecureCrt 对 lein1 没有任何问题。
控制键不起作用并且缺少 ~/.jline.rc 文件
没有里程碑 没有人被分配
(我已经继续创建了一个 ~/.jline.rc 包含 jline.terminal=auto 自从写了这个问题。)我的问题是我的控制键不起作用,我可以做些什么来解决这个问题。
这是我所做的事情的描述。
我在跑步
java -cp target/jline-2.11-SNAPSHOT-tests.jar:target/jline-2.11-SNAPSHOT.jar -Djline.internal.Log.debug=true jline.example.Example none
在我安装 jline2 的 ~/jline2 目录中。我的控制键(ctrl+a、ctrl+e、ctrl+u 和 Backspace)不起作用。
我正在使用 bash 作为 shell 并使用 VanDyke SecureCrt 终端仿真器产品登录 Ubuntu 12.04 系统。我最近没有对我的模拟器进行任何设置更改。
首先,我注意到我没有 ~/.jline.rc 文件 [DEBUG] Loading properties from: file:/home/cnorton/.jline.rc [DEBUG] Unable to read configuration from: file:/home/cnorton/.jline .rc java.io.FileNotFoundException: /home/cnorton/.jline.rc (没有这样的文件或目录)
在堆栈跟踪之后,这是输出的其余部分。
[DEBUG] 创建终端;type=auto [DEBUG] 配置:速度 38400 波特;第 34 行;第 117 栏;线 = 0; 内部 = ^C; 退出 = ^\; 擦除 = ^?; 杀死 = ^U; eof = ^D; eol = ; eol2 = ; 开关 = ; 开始 = ^Q; 停止 = ^S; 悬念 = ^Z; rprnt = ^R; 错误 = ^W; 下一个 = ^V; 冲洗 = ^O; 最小值 = 1; 时间=0;-parenb -parodd cs8 -hupcl -cstopb cread clocal -crtscts -ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany imaxbel -iutf8 opost -olcuc -ocrnl onlcr -onocr -onlret - ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
[DEBUG] 创建终端:jline.UnixTerminal@1d520c4 [DEBUG] 注册shutdown-hook: Thread[JLine Shutdown Hook,5,main] [DEBUG] 添加shutdown-hook 任务:jline.TerminalSupport$1@1e9cb75 [DEBUG] Ansi 支持: true [DEBUG] Echo 启用:false [DEBUG] NonBlockingInputStream start [DEBUG] 加载用户配置:file:/home/cnorton/.inputrc prompt> [DEBUG] 运行所有关机挂钩任务 [DEBUG] 运行任务:jline.TerminalSupport$1 @1e9cb75 [DEBUG] 删除关机钩子:线程[JLine 关机钩子,5,main]
这是运行中的更多调试输出
export JLINE_LOGGING=trace && lein trampoline 在克隆目录中运行 git clone git://github.com/trptcolin/reply.git 请注意控制键的作用。
cnorton@steamboy:~/reply$ export JLINE_LOGGING=trace && lein trampoline run REPL-y 0.2.0-SNAPSHOT Clojure 1.4.0 Exit: Control+D or (exit) or (quit) Commands: (user/help) Docs: (doc function-name-here) (find-doc "part-of-name-here") Source: (source function-name-here) (user/sourcery function-name-here) Javadoc: (javadoc java-object- or-class-here) 来自 clojuredocs.org 的示例:clojuredocs 或 cdoc (user/clojuredocs "ns-here" "name-here") [DEBUG] 从以下位置加载属性:file:/home/cnorton/.jline.rc [DEBUG ] 加载的属性:[DEBUG] jline.terminal=unix [TRACE] java.lang.Throwable: CREATE MARKER at jline.TerminalFactory.create(TerminalFactory.java:50) at jline.TerminalFactory.get(TerminalFactory.java:159) at jline.console.ConsoleReader.(ConsoleReader.java:226) 在 jline.console.ConsoleReader.(ConsoleReader.java:218) 在 jline.console.ConsoleReader.(ConsoleReader.java:210) 在 reply.reader.simple_jline$setup_console_reader.invoke(simple_jline.clj:39) 在 reply.reader.simple_jline$get_input_line.invoke(simple_jline.clj:74)在 reply.reader.simple_jline$safe_read_line$fn__941.invoke(simple_jline.clj:101) 在 clojure.lang.Atom.swap(Atom.java:37) 在 clojure.core$swap_BANG_.invoke(core.clj:2108) 在reply.reader.simple_jline$safe_read_line.invoke(simple_jline.clj:99) 在reply.eval_modes.nrepl$safe_read_line.invoke(nrepl.clj:55) 在reply.eval_modes.nrepl$parsed_forms.invoke(nrepl.clj:88)在reply.eval_modes.nrepl$run_repl.invoke(nrepl.clj:139) 在reply.eval_modes.nrepl$main.invoke(nrepl.clj:227) 在reply.main$launch_nrepl$fn__3187.invoke(main.clj:63 ) 在 clojure.core$with_redefs_fn.invoke(core.clj:6585) 回复.main$launch_nrepl.invoke(main.clj:62) 回复。main$launch.invoke(main.clj:79) at reply.main$_main.doInvoke(main.clj:89) at clojure.lang.RestFn.invoke(RestFn.java:397) at clojure.lang.Var.invoke (Var.java:411) 在 clojure.lang.AFn.applyToHelper(AFn.java:159) 在 clojure.lang.Var.applyTo(Var.java:532) 在 reply.ReplyMain.main(ReplyMain.java:14)在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method .invoke(Method.java:616) 在 clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93) 在 clojure.lang.Reflector.invokeStaticMethod(Reflector.java:207) 在 clojure.lang.Reflector.invokeStaticMethod(Reflector. java:200) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect。NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:616) 在 clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:93) at clojure.lang.Reflector.invokeStaticMethod(Reflector.java:207) at user$eval5.invoke(NO_SOURCE_FILE:1) at clojure.lang.Compiler.eval(Compiler.java:6511) at clojure .lang.Compiler.eval(Compiler.java:6501) at clojure.lang.Compiler.eval(Compiler.java:6477) at clojure.core$eval.invoke(core.clj:2797) at clojure.main$eval_opt。在 clojure.main$null_opt.invoke(main.clj:349) 在 clojure.main$initialize.invoke(main.clj:316) 在 clojure.main$main.doInvoke(main.clj) 调用(main.clj:297) :427) 在clojure.lang 的clojure.lang.RestFn.invoke(RestFn.java:421) 的clojure.lang.Var.invoke(Var.java:419)。AFn.applyToHelper(AFn.java:163) 在 clojure.lang.Var.applyTo(Var.java:532) 在 clojure.main.main(main.java:37)
[DEBUG] 创建终端;type=unix [TRACE] 运行:[sh,-c,stty -a < /dev/tty] [TRACE] 结果:速度 38400 波特;第 34 行;第 117 栏;线 = 0; 内部 = ^C; 退出 = ^\; 擦除 = ^?; 杀死 = ^U; eof = ^D; eol = ; eol2 = ; 开关 = ; 开始 = ^Q; 停止 = ^S; 悬念 = ^Z; rprnt = ^R; 错误 = ^W; 下一个 = ^V; 冲洗 = ^O; 最小值 = 1; 时间=0;-parenb -parodd cs8 -hupcl -cstopb cread clocal -crtscts -ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany imaxbel -iutf8 opost -olcuc -ocrnl onlcr -onocr -onlret - ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
[DEBUG] 配置:速度 38400 波特;第 34 行;第 117 栏;线 = 0; 内部 = ^C; 退出 = ^\; 擦除 = ^?; 杀死 = ^U; eof = ^D; eol = ; eol2 = ; 开关 = ; 开始 = ^Q; 停止 = ^S; 悬念 = ^Z; rprnt = ^R; 错误 = ^W; 下一个 = ^V; 冲洗 = ^O; 最小值 = 1; 时间=0;-parenb -parodd cs8 -hupcl -cstopb cread clocal -crtscts -ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany imaxbel -iutf8 opost -olcuc -ocrnl onlcr -onocr -onlret - ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
[DEBUG] Created Terminal: jline.UnixTerminal@74a7af [DEBUG] Registering shutdown-hook: Thread[JLine Shutdown Hook,5,main] [DEBUG] 添加shutdown-hook任务:jline.TerminalSupport$1@183e6d4 [DEBUG] Ansi 支持: true [TRACE] 运行:[sh,-c,stty -icanon min 1 -icrnl -inlcr < /dev/tty] [TRACE] 结果:[TRACE] 运行:[sh,-c,stty -echo < /dev/ tty] [TRACE] 结果:[DEBUG] 启用回显:false [DEBUG] NonBlockingInputStream start [DEBUG] 加载的用户配置:file:/home/cnorton/.inputrc [TRACE] 加载历史记录来自:/home/cnorton/.jline- reply.history user=> [TRACE] 运行:[sh,-c,stty intr undef < /dev/tty] [TRACE] 结果:[TRACE] 击键:1 [TRACE] 绑定:BEGINNING_OF_LINE [TRACE] 击键:5 [ TRACE] 绑定:END_OF_LINE [TRACE] 击键:21 [TRACE] 绑定:UNIX_LINE_DISCARD [TRACE] 击键:127 [TRACE] 绑定:BACKWARD_DELETE_CHAR