2013-02-28 24 views
5

Bạn biết làm thế nào khi bạn nhấn mũi tên lên trong bash nó sẽ điền vào lệnh cuối cùng bạn đã gõ? Có cách nào để làm điều này trong nrepl?Có cách nào để thực hiện tìm kiếm lịch sử trong nrepl không?

Cho đến nay tôi đã làm một tìm kiếm đảo ngược (Cr), gõ vài ký tự đầu tiên của dòng trong câu hỏi, giết chết dòng (s) (Ck), nhảy đến cuối của bộ đệm (M->) và yanking đường bị giết (Cy). Có cách nào dễ hơn để thực hiện việc này không?

Trả lời

12

Bạn có thể sử dụng M-pM-n để điều hướng lên và xuống trong lịch sử nhập. Ngoài ra, đầu vào hiện tại có thể được sử dụng làm mẫu tìm kiếm, tức là nhập lệnh bắt đầu mà bạn muốn khớp, sau đó M-p sẽ đưa bạn đến kết quả phù hợp tiếp theo. Điều này sử dụng các hàm nrepl-previous-inputnrepl-next-input. Nếu bạn không thích những keybindings, bạn cũng có thể rebind để <up><down>:

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

Chỉ cần thêm video này vào .emacs của bạn (và đánh giá C-x C-e sau mỗi dòng nếu bạn không muốn khởi động lại Emacs của bạn). Ngoài ra, lưu ý rằng M-nM-p có thể bị ràng buộc với chức năng tương tự trong các chế độ REPL và comint khác.

+1

cảm ơn! điều này hoạt động hoàn hảo. –

3

Nếu bạn đang sử dụng Cider, bạn có thể thêm dòng sau vào cấu hình người dùng của bạn:

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

Để tồn tại lịch sử cho lần sau khi bạn mở một repl, bạn cũng có các tùy chọn sau:

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

cider-repl-history-file là bắt buộc nếu bạn muốn có lịch sử liên tục. Nếu bạn sử dụng đường dẫn tương đối, lịch sử sẽ là cục bộ cho dự án hiện tại.

Các vấn đề liên quan