Clojure: 如何在 'lein repl' 中搜索历史记录?

7

我经常在bash中执行像这样的命令:

history | grep 'find'

例如,查找我可能运行过的复杂的find / xargs命令。

我想知道——"lein repl"存储其历史数据的位置?这很重要,因为那么我就可以编写一个名为leingrep.sh的脚本,该脚本只需通过lein历史会话进行grep搜索。

显然,这些历史记录保存在磁盘上,因为历史记录会从一个repl保留到下一个repl。

4个回答

9

Lein使用的是readline(如果您已经安装了它)或jline(如果您没有安装readline,我建议您安装)。我不会费心去查找磁盘上的历史记录文件 - 只需按下Ctrl-r,键入搜索文本,然后不断按下Ctrl-r,直到找到您要查找的内容。这是一个通用的readline功能,在任何readline应用程序中都可以使用(包括bash)。


4
一旦您开始使用readline,就需要考虑几个控件,可以通过您的~/.inputrc文件进行配置。
我没有找到默认的“历史记录大小”记录,但我猜测它只有大约100。我经常会丢失一些我希望留下的旧条目。此外,“vi-mode”对于vi用户来说是一个很棒的东西。这些(加上一个奖励)在.inputrc中变成:
set history-size 10000
set editing-mode vi
# Only require 1 tab for completion.
set show-all-if-ambiguous on

请注意,这个配置将影响许多 REPL 工具,比如 gdb、irb/pry、lein、psql、ipython、R 等。

0

查看我的主目录,似乎lein repl已经选择了jline。 历史记录存储的文件如下: ~/.jline-clojure.main.history ~/.jline-reply.history

希望这有所帮助。


0

我在我的Mac上通过Homebrew安装了lein

brew install leiningen

而且历史记录文件存储在我的主目录中:

~/.lein/repl-history

版本是:

% lein --version
Leiningen 2.6.1 on Java 1.8.0_77 Java HotSpot(TM) 64-Bit Server VM

(我没有~/.inputrc或者~/.jline*


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接