tclsh交互shell(Ubuntu14.04)中如何使用左右方向键?

How to use the left and right arrow keys in the tclsh interactive shell (Ubuntu 14.04)?

为什么我不能使用左右箭头键(实际上,向上和向下键也一样)在 tclsh 交互中当前所在的行上移动shell?如果我尝试按其中任何一个,我会得到一堆咒语而不是来回移动。这不是那么方便,例如,当您输入错误,但您不能将光标移回以更改它时。您必须使用退格键擦除您在打字错误所在位置之后键入的所有内容,从而破坏您的所有工作。坦率地说,是否可以解决这个错误行为?

该行为没有错误。不方便是的。

要在 shell 中进行编辑,通常使用 GNU readline 库。如果程序不使用该库,则您没有该功能。

对于 tclsh 存在许可原因(GPL 与 BSD 风格的 Tcl 许可),这使得在 readline 的所有平台上直接向 tclsh 添加 readline 支持不方便不是操作系统的一部分(几乎所有东西,但 Linux)。

您可以使用 Ubuntu rlwrap 包来仍然获得您想要的编辑。 安装 rlwrap:

sudo apt-get install rlwrap

并通过命令行编辑将其用于 运行 tclsh:

rlwrap -c tclsh

另一种选择是使用基于 Tk 的 shell tkcon,它作为 Tcl shell 提供了更多选项,它作为 ubuntu 包提供也是。

扩展我自己的答案:您还可以构建和使用 tclreadline,作为 .tclshrc 中的一个包。

您可以使用 schlenk 建议的通用 rlwrap,或者您可以使用 tclreadline:

安装 tclreadline(例如,使用 debian/ubuntu 的以下命令):

sudo apt install tclreadline

通过将其添加到您的 ~/.tclshrc:

来自动加载它
if {$tcl_interactive} {
    package require tclreadline 
    ::tclreadline::Loop
}

使用 tclreadline 不仅提供基本的编辑功能,还包括制表符补全功能,rlwrap 由于其通用性而无法做到这一点。