我可以在tcl shell中绑定键吗?

shstlldc  于 2023-03-09  发布在  Shell
关注(0)|答案(1)|浏览(97)

在我的tcshrc中,我可以设置 ctrl+right_arrow/left_arrow 来在终端中向前/向后跳过一个单词。
我想在tcl shell中设置相同的行为(例如在Fusion Compiler或Prime Time中),可以吗?
在tcshrc中,我使用了:

bindkey "^[[1;5C" forward-word 
bindkey "^[[1;5D" backward-word

bindkey在tcl shell中不起作用

zed5wv10

zed5wv101#

Tcl shell(无论是tclsh,还是某些平台上的wish)使用简单的cooked模式来处理输入,这不允许您所描述的任何类型的复杂绑定;在它从终端接收输入时,已经输入了一整行。2确切地说,支持什么样的编辑取决于终端实现的提供者,但这通常是极其简单的。
你可以尝试一些替代品。* 一些 * 这些我已经尝试过:

  • 您可以使用rlwrap在Tcl shell周围 Package 一个readline实现。我没有这方面的经验,但我知道其他人已经这样做了。(也可能有其他方法来完成readline/editline库集成。)
  • 假设你有一个可用的GUI,你可以使用Tkcon。根据我的经验,它工作得很好,已经给你提供了完整的行编辑。(它还可以做很多其他的事情,比如附加到现有的进程。)
  • 在Tcl 8.7中,你可以chan configurestdin通道进入raw模式,并访问实际按下的键(尽管你还需要处理向用户显示正在发生的事情,如果相关的话),我不知道是否有人 Package 了它来制作一个可编辑的命令行系统,但这应该是可能的。

相关问题