我想覆蓋C-l
並使用它來做M-x erase-buffer
然後模擬打RET
,只有當我在m-shell-mode
。 C-l
應該是其默認值,recenter-top-bottom
,否則。我該怎麼做?emacs - 僅在主要模式下設置快捷鍵?
1
A
回答
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)
1
您可以添加到您的m-shell-mode
鉤下面的代碼:
(local-set-key (kbd "C-l") 'erase-buffer)
相關問題
- 1. 在兩個Emacs次要模式下衝突的鍵盤快捷鍵
- 2. Emacs顯示模式快捷鍵
- 3. 設置TAB作爲快捷方式在Emacs Haskell的模式
- 4. 設置快捷鍵(如IDO)
- 5. 設置快捷鍵
- 6. Emacs多鍵盤快捷鍵
- 7. 掛鉤到Emacs的快捷鍵按下
- 8. 快捷方式在Emacs
- 9. 如何設置快捷鍵快捷鍵「Ctrl +加號」
- 10. Atmel Studio中的Emacs鍵盤快捷鍵
- 11. 設置JButton的鍵盤快捷鍵?
- 12. 在Textmate中設置快捷鍵
- 13. 在emacs中設置模式
- 14. 需要設置emacs縮進模式
- 15. 任何方式來沉默Emacs鍵盤快捷鍵的建議?
- 16. Pycharm快捷鍵和主題
- 17. 什麼是在SQL Server 2008中設置主鍵的快捷方式?
- 18. GNU emacs:設置快捷鍵以突出顯示帶有Shift鍵的文本
- 19. 快捷與元Shift鍵不emacs的
- 20. Emacs快捷鍵輸入序列
- 21. 在IE10 Kiosk模式下限制快捷鍵
- 22. 的Javascript在Emacs的主要模式
- 23. Emacs:在idlwave主要模式下禁用自動填充次要模式
- 24. 如何設置雙擊`esc`快捷鍵?
- 25. 如何設置菜單快捷鍵?
- 26. 關於Android Studio中設置快捷鍵
- 27. 如何設置按鈕的快捷鍵
- 28. Emacs的蟒蛇模式:鍵盤快捷方式PDB一步一步的調試
- 29. 爲菜單項設置「僅查看」快捷方式?
- 30. 鍵盤快捷鍵放置tasktags在Eclipse
肯定是'm-shell-mode',它是一個MATLAB終端。任何方式我也可以模擬按ENTER鍵?基本上'erase-buffer'將清除MATLAB命令窗口;點擊ENTER會彈出'>>'提示符(我知道它在那裏,但我猜它是一個可視化的東西)。 –
@Dang Koa,你可能想嘗試的替代綁定。 –
@TreyJackson,什麼是shell-clear-command?我在Emacs(24..94.1)或google中沒有看到。 – Tyler