2012-05-31 2 views

답변

3

m-shell-mode 만약 당신이 다음, 다른 프로세스와 상호 작용하는 쉘을 제공하는 많은 모드의 사실이다 comint-mode에 기반 comint-send-input 함수를 사용하여 return 키 누르기를 matlab에 전달할 수 있습니다. 이 경우 다음 코드가 원하는대로 수행해야합니다.

(defun clear-and-return() 
    "Erases the buffer, and then passes a return to the buffer process. 
Assumes the buffer is attached to a comint process." 
    (interactive) 
    (erase-buffer) 
    (comint-send-input)) 

(defun my-m-shell-mode-hook() 
    (local-set-key (kbd "C-l") 'clear-and-return)) 

(add-hook 'm-shell-mode-hook 'my-m-shell-mode-hook) 

첫 번째 defun은 원하는대로 기능을 수행합니다. 두 번째 함수는 함수가 호출 될 때 활성화 된 버퍼에 대해 해당 함수에 C-l을 바인딩하는 후크 함수입니다. add-hookm-shell-mode을 시작할 때마다 emacs가 두 번째 기능을 실행하도록 지시합니다. my-m-shell-mode의 본문에 m- 쉘 모드 커스터마이징을 추가 할 수 있으며 Emacs는 모드를 시작할 때마다 Emacs를 모두 실행합니다.

comint-mode을 기반으로하지 않는 경우 return을 눌러야합니다. 모드를 실행하는 버퍼에서 리턴 키에 바인드 된 함수를 찾으려면 C-h k RET을 입력하십시오. 위의 코드에서 comint-send-input 대신 해당 함수를 사용하십시오.

4

확실하지 무엇 m-shell-mode이지만, 그것의 경우 major mode을 잘 정의 된, 그 트릭해야 다음

(require 'm-shell-mode) 
(define-key m-shell-mode-map (kbd "C-l") 'erase-buffer) 

내가 같은 시각적 효과를 결합 대안을 제시 할 수 있음을, 그러나 유지 주변의 버퍼 내용 (편리 할 수 ​​있음).

(defun shell-clear-command (&optional a) 
    "\"clear\" the screen" 
    (interactive "P") 
    (recenter (or a 0))) 
(define-key m-shell-mode-map (kbd "C-l") 'shell-clear-command) 
+0

은 확실히'm-shell-mode'를 의미합니다. MATLAB 터미널입니다. 어떤 식 으로든 ENTER 키를 누를 수도 있습니다. 기본적으로'erase-buffer'는 MATLAB 명령 창을 지울 것입니다; ENTER 키를 누르면'>'프롬프트가 뜹니다 (나는 거기에 있다는 것을 알고 있지만 그것은 내가 생각하는 시각적 인 것입니다). –

+0

@Dang Koa, 당신이 시도하고 싶은 다른 바인딩. –

+0

@TreyJackson, shell-clear-command이란 무엇입니까? 내 이맥스 (24 .. 94.1) 나 google에서는 볼 수 없다. – Tyler

1

당신은 당신의 m-shell-mode 후크에 다음 코드를 추가 할 수 있습니다

(local-set-key (kbd "C-l") 'erase-buffer) 
관련 문제