你知道当你点击bash中的向上箭头时它会填写你输入的最后一个命令吗?在nrepl中有没有办法做到这一点?
到目前为止,我一直在进行反向搜索( Cr ),输入相关行的前几个字符,删除行( Ck ),跳到缓冲区的末尾( M-> )并掠过被杀死的行( Cy )。有更简单的方法吗?
答案 0 :(得分:12)
您可以使用M-p
和M-n
在输入历史记录中向上和向下导航。此外,当前输入可用作搜索模式,即键入要匹配的命令的开头,然后M-p
将带您进入下一个匹配。这使用函数nrepl-previous-input
和nrepl-next-input
。如果您不喜欢这些键绑定,您还可以重新绑定到<up>
和<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和comint模式中的类似功能。
答案 1 :(得分:3)
如果您使用的是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
。如果使用相对路径,则历史记录将是当前项目的本地历史记录。