2013-02-28 16 views
5

Sapete come quando si preme la freccia su in bash si riempirà l'ultimo comando che hai digitato? C'è un modo per farlo in nrepl?C'è un modo per fare una ricerca della cronologia in nrepl?

Finora ho fatto una ricerca inversa (Cr), digitando i primi caratteri della linea in questione, uccidendo la linea (s) (Ck), saltando alla fine del buffer (M->) e strappare la linea uccisa (Cy). C'è un modo più semplice per farlo?

risposta

12

È possibile utilizzare M-p e M-n per spostarsi su e giù nella cronologia di input. Inoltre, l'input corrente può essere usato come un modello di ricerca, cioè digitare l'inizio del comando che si desidera abbinare, quindi M-p ti porterà alla prossima partita. Questo utilizza le funzioni nrepl-previous-input e nrepl-next-input. Se non vi piacciono queste combinazioni di tasti, è possibile anche associare nuovamente a <up> e <down>:

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

Basta aggiungere questo alla vostra .emacs (e valutare C-x C-e dopo ogni riga se non si desidera riavviare l'Emacs). Inoltre, è possibile che M-n e M-p siano associati a funzionalità simili in altre modalità REPL e Comint.

+1

grazie! questo funziona perfettamente. –

3

Se stai usando Cider, è possibile aggiungere il seguente alla propria configurazione utente:

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

Per mantenere la cronologia per la prossima volta che si apre un repl, si hanno anche le seguenti opzioni:

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

cider-repl-history-file è necessario se si desidera una cronologia persistente. Se si utilizza un percorso relativo, la cronologia sarà locale rispetto al progetto corrente.