如何使用tclsh交互式shell(Ubuntu 14.04)中的左右箭头键?

时间:2016-03-05 19:48:47

标签: tcl tclsh

为什么我不能使用左右箭头键(实际上,同样适用于上下键)来移动{{1}当前所在的线路。交互式shell?如果我试图按任何一个,我得到一堆abracadabra而不是来回移动。例如,当您输入拼写错误时,这并不是那么方便,但是您无法移动光标以更改它。您必须使用退格键来删除在拼写错误所在位置之后键入的所有内容,从而破坏您的所有工作。坦率地说,有可能解决这个问题吗?

enter image description here

2 个答案:

答案 0 :(得分:5)

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

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

对于tclsh,有许可证原因(GPL与BSD风格的Tcl许可证),这使得在tclsh不是readline的所有平台上直接向sudo apt-get install rlwrap 添加readline支持变得不方便操作系统的一部分(除了Linux之外几乎所有东西)。

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

rlwrap -c tclsh

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

tkcon

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

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

答案 1 :(得分:1)

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

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

sudo apt install tclreadline

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

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

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