当我向上/向下按压时,我应该得到 - 就像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级别上运行良好。
答案 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