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

Gab*_*dor 12 erlang autocomplete read-eval-print-loop

我想使用rlwrap和自定义的erlang repl.

如果我将它作为"rlwrap -a myrepl"运行它,它的工作原理非常好.

问题是myrepl有内置选项卡完成,它被rlwrap踩踏.

我想让rlwrap释放TAB键

Han*_*Lub 21

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

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

-a(--always-readline)选项是相当粗暴的方式代替了你的命令的rlwrap的在线编辑行为.它主要用于具有非常简单的行编辑器的命令,而不具有例如命令历史

如果你想使用这个-a选项,因为你更喜欢rlwrap你的命令(比如TAB完成)(例如TAB完成),那么请继续,但是不可能选择其中一个并保留其他一些.

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

汉斯(rlwrap作者)


编辑(2017年4月):

在许多情况下,可以使用过滤器来恢复完成.有关此示例,请参阅基于readline的节点shell.

  • @ Gabriel:从"特殊键"中删除TAB是不够的,这只会给你一个死的TAB键.真正需要做的是TAB清除底层命令的输入缓冲区,将当前的readline输入缓冲区传递给它,定位其光标,然后传递TAB,解析结果输出(包括光标移动命令),最后填充readline输入缓冲区并相应地设置rl_point.所有这些步骤都很困难且容易出错; 特别是解析命令的输出需要rlwrap来包含一个虚拟终端模拟器. (6认同)
  • Erlang shell已完成TAB,但缺少其他几个方面.会话之间没有历史记录,有限的行编辑功能等 (3认同)
  • 惭愧,我想用rlwrap将vim绑定到elixir repl中.猜猜我只是在emacs中使用它.谢谢你的简明解释. (2认同)