我想覆盖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