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