8

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

在此处输入图像描述

4

2 回答 2

10

行为不是错误的。不方便是的。

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

由于tclsh存在许可原因(GPL 与 BSD 风格的 Tcl 许可),这使得为所有不属于操作系统的平台(几乎除了 Linux 之外tclsh的所有平台)直接添加 readline 支持很不方便。readline

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

sudo apt-get install rlwrap

并使用它通过命令行编辑运行 tclsh:

rlwrap -c tclsh

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

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

于 2016-03-05T21:55:45.913 回答
3

您可以使用 schlenk 建议的通用 rlwrap ,也可以使用tclreadline

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

sudo apt install tclreadline

通过将其添加到您的自动加载它~/.tclshrc

if {$tcl_interactive} {
    package require tclreadline 
    ::tclreadline::Loop
}

Usingtclreadline不仅提供了基本的编辑功能,还包括制表符完成,rlwrap由于它的通用性,这是无法做到的。

于 2020-10-26T09:08:15.117 回答