emacs 쉘에서 이전 명령을 어떻게 실행합니까? 이전에 실행했던

우분투에서 터미널 모드에 있고 2 개의 버퍼가 열린 emacs를 실행 중입니다. 하나는 루비 파일이고 다른 하나는 쉘 (Mx shell을 입력하여 열림)이며 쉘 버퍼로 전환 할 때 원합니다. 이전에 실행했던 것과 동일한 명령을 실행합니다. 나는 보통 터미널 창에서 위쪽 화살표를 누르지 만 emacs에서는 단순히 커서를 한 줄 위로 올려 놓았습니다.

누구든지 emacs 쉘 ​​내에서 이전 쉘 명령을 실행하기 위해 키 입력을 알고 있습니까?



답변

M-p 일을한다


답변

에 더하여을 (를 M-p) 사용할 수도 있습니다 C-up. 보완 키 M-n또는 C-down역사에서 다음 명령을 얻을 수 있습니다.


답변

이것을 emacs init 파일에 추가 할 수도 있습니다 :

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


답변

나는 일반적으로 문맥 의존성을 피하려고 노력하기 때문에 thiagowfx 솔루션이 나에게 바람직합니다. 그러나 그것이 작동하려면 먼저로드 comint 모드를 추가해야했습니다.

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


답변

DeLorean88의 답변은 저에게 효과적이지만 “progn”줄에 두 번째 닫는 괄호로만 작동했습니다.

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


답변