我想使用带有自定义erlang repl的rlwrap。
如果我将其作为"rlwrap“运行,它将运行得很好。
问题是myrepl有内置的制表符补全功能,这会被rlwrap所践踏。
我想使用rlwrap来释放Tab键
发布于 2012-02-10 05:50:04
你不能同时使用rlwrap的行编辑/历史记录和你的repl的TAB完成。
rlwrap为没有它的命令提供行编辑、历史记录和(非常简单的)完成功能。一个像TAB补全这样奇特的命令不应该需要rlwrap来编辑它的行,不是吗?
-a (--always-readline)选项是一种相当粗糙的方式,可以用rlwrap的行编辑行为代替命令的行编辑行为。它主要用于具有非常简单的行编辑器的命令,而没有命令历史记录
如果您希望使用-a选项,因为您更喜欢rlwrap的功能(如持久历史记录或彩色提示),而不是命令的功能(如制表符完成),请继续使用,但不可能在保留某些功能的同时保留其中的一些功能。
这是程序(和它们的用户)为避免使用readline库和随附的GPL许可证而必须付出的(小)代价。
Hans (rlwrap作者)
编辑(2017年4月):
在许多情况下,可以使用filter来恢复完成。有关这方面的示例,请参阅A node shell based on readline。
发布于 2017-04-13 08:40:34
Rlwrap很可爱。但在Erlang中,它只提供持久的历史记录,同时打破了erl的制表符补全。
最根本的问题是Erlang的erl REPL太旧了,而且没有遵循正常的*nix约定。此外,他们拒绝修复它,因为他们害怕随机的,发牢骚的系统管理员不能接受任何更改。再多的rlwrap“管道胶带”攻击也无法修复糟糕的UX REPL。
最好是从头开始编写一个REPL,比如pry/ipython等,它可以完成可配置的颜色、制表符补全、持久历史记录、分页、CLI观察器、插件等。
Rlwrap在具有原始shell的程序上大放异彩。
https://stackoverflow.com/questions/9210931
复制相似问题