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


47

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

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

답변:



24

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


1
아, 타이 더 자연스러운 것 같습니다.
Lidmith

1
초기 질문에 포함되지 않았지만 터미널 (PuTTY)을 통해 Emacs에서 [C-up] 및 [C-down]이 작동하지 않는다는 것을 인정해야합니다.
avp

1
내 Mac에서도 작동하지 않는 것 같습니다. C-up은 Mac 전용 기능에 매핑됩니다.
amo

나에게도 C-up매핑되어 expose있습니다. 그리고 M-p더 자연 스럽습니다.
Indradhanush Gupta

5

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

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

2

나는 일반적으로 문맥 의존성을 피하려고 노력하기 때문에 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))

0

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))

파일을 다시 확인하십시오. 마지막 닫는 대괄호가 첫 번째 대괄호와 일치하지 않으므로 두 번째 define-key는 구문 오류를 발생시켜야합니다.
vfclists
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.