如何在tclsh交互式外壳程序(Ubuntu 14.04)中使用左右箭头键?

5 tcl tclsh

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

在此处输入图片说明

Kar*_*tel 7

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

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

sudo apt install tclreadline
Run Code Online (Sandbox Code Playgroud)

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

if {$tcl_interactive} {
    package require tclreadline 
    ::tclreadline::Loop
}
Run Code Online (Sandbox Code Playgroud)

使用tclreadline不仅提供基本的编辑功能,还包括制表符完成,这是rlwrap由于其通用性质而无法完成的。


sch*_*enk 5

该行为不是马车。不方便,是的。

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

由于tclsh许可证的原因(GPL与BSD风格的Tcl许可证),这给不属于操作系统一部分的tclsh所有平台readline(几乎是Linux以外的几乎所有平台)直接添加了readline支持带来了不便。

您可以使用Ubuntu rlwrap软件包来进行所需的编辑。安装rlwrap:

sudo apt-get install rlwrap
Run Code Online (Sandbox Code Playgroud)

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

rlwrap -c tclsh
Run Code Online (Sandbox Code Playgroud)

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

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