我想将rlwrap与自定义的erlang repl一起使用。
如果我将它作为“rlwrap -a myrepl”运行,它的效果非常好。
问题是myrepl有内置的标签完成,它被rlwrap踩踏。
我想让rlwrap释放TAB键
答案 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的程序上闪耀。