Làm thế nào để bạn chạy lệnh trước trong shell emacs?


43

Tôi đang ở chế độ đầu cuối trên Ubuntu và tôi đang chạy emacs với 2 bộ đệm mở, một là tệp ruby ​​và cái còn lại là shell (được mở bằng cách gõ shell Mx) và khi tôi chuyển sang bộ đệm shell, tôi muốn để chạy cùng một lệnh mà tôi đã chạy trước đó. Tôi thường chỉ cần nhấn mũi tên lên trong một cửa sổ đầu cuối, nhưng trong emacs, nó chỉ đơn giản là đưa con trỏ lên một dòng.

Có ai biết tổ hợp phím để chạy lệnh shell trước đó từ bên trong shell emacs không?

Câu trả lời:


59

M-p Làm công việc


Cảm ơn! Tôi đã tìm kiếm một chút, nhưng không thể tìm thấy nó.
Lidmith

23

Ngoài M-p , bạn cũng có thể dùng C-lên , mà tôi thấy thích hợp hơn. Các phím bổ sung M-n hoặc là C-xuống sẽ giúp bạn có được lệnh tiếp theo trong lịch sử.


1
À, ty. Điều đó có vẻ tự nhiên hơn.
Lidmith

1
Mặc dù nó không được đặt trong câu hỏi ban đầu, tôi phải thừa nhận rằng [C-up] và [C-down] không hoạt động trong Emacs thông qua thiết bị đầu cuối (PuTTY).
avp

1
Nó cũng dường như không hoạt động trên máy Mac của tôi; C-up được ánh xạ tới một chức năng dành riêng cho máy Mac.
amo

Cho tôi nữa C-up được ánh xạ tới expose. Và M-p cảm thấy tự nhiên hơn với tôi.
Indradhanush Gupta

5

Bạn cũng có thể thêm phần này vào tệp init emacs của mình:

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

2

thiagowfx giải pháp tốt hơn cho tôi, vì tôi thường cố gắng tránh phụ thuộc vào ngữ cảnh. Tuy nhiên, để nó hoạt động, trước tiên tôi phải thêm chế độ tải comint:

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

0

Câu trả lời của DeLorean88 có hiệu quả với tôi, nhưng chỉ với khung đóng thứ hai trên dòng "progn":

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

Kiểm tra lại tập tin của bạn. Khóa xác định thứ hai sẽ gây ra lỗi cú pháp vì khung đóng cuối cùng không khớp với dấu đầu tiên.
vfclists
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.