rlwrap可以使用包装命令自己的TAB完成吗?

时间:2012-02-09 12:35:02

标签: autocomplete erlang read-eval-print-loop

我想将rlwrap与自定义的erlang repl一起使用。

如果我将它作为“rlwrap -a myrepl”运行,它的效果非常好。

问题是myrepl有内置的标签完成,它被rlwrap踩踏。

我想让rlwrap释放TAB键

2 个答案:

答案 0 :(得分:21)

你不能同时使用rlwrap的行编辑/历史记录和你的repl的TAB完成。

rlwrap为没有它的命令提供行编辑,历史记录和(非常简单)完成。一个像TAB完成一样奇特的命令不需要rlwrap来进行行编辑吗?

-a--always-readline)选项是替换 rlwrap的行编辑行为的粗略方式。它主要用于具有非常简单的行编辑器的命令,例如,没有例如命令历史

如果你想使用-a选项,因为你更喜欢rlwrap对你的命令的忠诚(如持续历史或彩色提示)(如TAB完成),请继续,但它是不可能选择一个人的一些幻想并保留其中一些。

这是(小)价格程序(及其用户)必须为避免readline库及其附带的GPL许可证而付费。

汉斯(rlwrap作者)

<小时/> 编辑(2017年4月):

在许多情况下,可以使用filter来恢复完成。有关此示例,请参阅A node shell based on readline

答案 1 :(得分:1)

Rlwrap很可爱。但在Erlang中,它只提供持续的历史记录,同时打破了erl的标签完成。

根本问题是Erlang的错误REPL只是陈旧和破坏,并且不遵循正常的* nix约定。此外,他们拒绝修理它,因为担心无法接受任何改变的随机,不高兴的系统管理员。没有任何数量的rlwrap&#34;管道胶带&#34;黑客可以修复一个糟糕的UX REPL。

从头开始编写REPL(如pry / ipython / etc)会更好(尽管工作量要多得多)。它可以配置颜色,选项卡完成,持久历史,分页,CLI观察器,插件等。

Rlwrap在具有原始shell的程序上闪耀。