【问题标题】:How to use the left and right arrow keys in the tclsh interactive shell (Ubuntu 14.04)?如何在 tclsh 交互式 shell(Ubuntu 14.04)中使用左右箭头键?
【发布时间】:2016-03-05 19:48:47
【问题描述】:

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

【问题讨论】:

  • 那是什么以及我该如何使用它?

标签: tcl tclsh


【解决方案1】:

这种行为没有问题。不方便是的。

要在 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 中的一个包。

【讨论】:

    【解决方案2】:

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

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

    sudo apt install tclreadline
    

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多