您知道当您在 bash 中点击向上箭头时,它会如何填写您输入的最后一个命令吗?有什么办法可以在 nrepl 中做到这一点?
到目前为止,我一直在进行反向搜索 ( C-r),输入相关行的前几个字符,终止行 ( C-k),跳到缓冲区的末尾 ( M->) 并拉出终止行 ( C-y)。有没有更简单的方法来做到这一点?
您可以使用M-p
和M-n
在输入历史记录中上下导航。此外,当前输入可以用作搜索模式,即键入要匹配的命令的开头,然后M-p
将带您到下一个匹配。这使用函数nrepl-previous-input
和nrepl-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 和类似模式中的类似功能。
如果您使用的是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
如果你想要一个持久的历史记录是必需的。如果您使用相对路径,则历史记录将是当前项目的本地记录。