2012-05-31 29 views

回答

3

如果m-shell-mode基於comint-mode,這是許多模式,提供一個外殼來與另一個進程交互的真實,那麼你可以將return按鍵通過功能comint-send-input傳遞給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-hook告訴emacs在你啓動m-shell-mode時運行第二個函數。您可以在my-m-shell-mode的主體內添加更多的m-shell模式定製,並且每次啓動模式時Emacs都會運行它們。

如果m-shell-mode不是基於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?我在Emacs(24..94.1)或google中沒有看到。 – Tyler

1

您可以添加到您的m-shell-mode鉤下面的代碼:

(local-set-key (kbd "C-l") 'erase-buffer)