如何在SWI-Prolog控制台中使用上/下历史记录键?

时间:2012-02-27 10:33:32

标签: bash ubuntu keyboard-shortcuts swi-prolog

当我向上/向下按压时,我应该得到 - 就像unix - 之前的命令,但我得到了:

Welcome to SWI-Prolog (Multi-threaded, 32 bits, Version 6.0.0)
Copyright (c) 1990-2011 University of Amsterdam, VU Amsterdam
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.

For help, use ?- help(Topic). or ?- apropos(Word).

1 ?- ['nc'].
% nc compiled into nc 0.00 sec, 84 clauses
true.

2 ?- listing.
true.

(我按'向上'箭头键返回'列表'命令..然后..)

3 ?- **^[[A**

我从源代码编译而没有任何额外的'configure'或'make'参数。

在以前版本的swi-prolog中,我发现这种情况很随意......有时控制台弄得一团糟,我不得不按'。'强制它终止当前行,然后历史记录将重新开始工作。

但这个最新版本.. nada ..我正在使用ubuntu linux,bash shell。感觉就像一个o.s.环境问题,或swi-prolog中的错误。箭头键/历史记录在linux级别上运行良好。

4 个答案:

答案 0 :(得分:2)

我特别不知道swi-prolog,但是我使用rlwrap为其他没有内置编辑功能的解释器解决了这个问题。它使用起来非常简单;你只需要rlwrap运行命令而不是直接运行它。

答案 1 :(得分:2)

您必须先在主机上安装软件包libreadline-dev,然后才能编译swiprolog以使箭头正常工作。

答案 2 :(得分:0)

这实际上不是一个答案,更多的是一种解决方法,以防万一其他人遇到同样的问题。

虽然“向上/向下”箭头键在6.0.0中显示为破坏(和.1 - 只是尝试过),但“基于命令”的历史回调似乎工作正常,因此可以通过这种方式检索以前的命令

例如

3 ?- !!.
listing.
true.

4 ?- L='fred', integer(L).
false.

5 ?- !!. 
L='fred', integer(L).
false.

6 ?- h.
    1   listing.
    2   listing.
    3   listing.
    4   L='fred', integer(L).
    5   L='fred', integer(L).
6 ?- !3.
listing.
true.

答案 3 :(得分:0)

我在OSX中遇到了同样的问题,并通过以下方式解决了这个问题:

brew install rlwrap

# every time when launching swipl:
rlwrap swipl