6

您知道当您在 bash 中点击向上箭头时,它会如何填写您输入的最后一个命令吗?有什么办法可以在 nrepl 中做到这一点?

到目前为止,我一直在进行反向搜索 ( C-r),输入相关行的前几个字符,终止行 ( C-k),跳到缓冲区的末尾 ( M->) 并拉出终止行 ( C-y)。有没有更简单的方法来做到这一点?

4

2 回答 2

12

您可以使用M-pM-n在输入历史记录中上下导航。此外,当前输入可以用作搜索模式,即键入要匹配的命令的开头,然后M-p将带您到下一个匹配。这使用函数nrepl-previous-inputnrepl-next-input。如果你不喜欢这些键绑定,你也可以重新绑定到<up>and <down>

(define-key nrepl-mode-map (kbd "<up>") 'nrepl-previous-input)
(define-key nrepl-mode-map (kbd "<down>") 'nrepl-next-input)

只需将其添加到您的(如果您不想重新启动 Emacs,请在每行之后.emacs进行评估)。C-x C-e另外,请注意,M-n并且M-p可能会绑定到其他 REPL 和类似模式中的类似功能。

于 2013-02-28T06:51:32.693 回答
4

如果您使用的是Cider,则可以将以下内容添加到您的用户配置中:

(define-key cider-repl-mode-map (kbd "<up>") 'cider-repl-previous-input)
(define-key cider-repl-mode-map (kbd "<down>") 'cider-repl-next-input)

要在下次打开 repl 时保留历史记录,您还可以使用以下选项:

(setq cider-repl-wrap-history t)
(setq cider-repl-history-size 1000)
(setq cider-repl-history-file "~/.cider-repl-history")

cider-repl-history-file如果你想要一个持久的历史记录是必需的。如果您使用相对路径,则历史记录将是当前项目的本地记录。

于 2016-11-13T04:43:02.243 回答