emacs-仅在主模式下设置快捷键?

emacs-仅在主模式下设置快捷键?,emacs,Emacs,我想重写C-l,并使用它来执行M-x擦除缓冲,然后模拟敲击RET,仅当我处于M-shell-mode时C-l应为其默认值,否则为recenter top-bottom。我该怎么做?不确定什么是m-shell-mode,但是如果它是一个定义良好的模式,那么下面应该可以做到: (require 'm-shell-mode) (define-key m-shell-mode-map (kbd "C-l") 'erase-buffer) 我建议使用另一种绑定,它具有相同的视觉效果,但保留缓冲区内容(这

我想重写
C-l
,并使用它来执行
M-x擦除缓冲
,然后模拟敲击
RET
,仅当我处于
M-shell-mode
C-l
应为其默认值,否则为
recenter top-bottom
。我该怎么做?

不确定什么是
m-shell-mode
,但是如果它是一个定义良好的模式,那么下面应该可以做到:

(require 'm-shell-mode)
(define-key m-shell-mode-map (kbd "C-l") 'erase-buffer)
我建议使用另一种绑定,它具有相同的视觉效果,但保留缓冲区内容(这很方便)


不确定什么是
m-shell-mode
,但是如果它是一个定义良好的模式,那么下面应该可以做到这一点:

(require 'm-shell-mode)
(define-key m-shell-mode-map (kbd "C-l") 'erase-buffer)
我建议使用另一种绑定,它具有相同的视觉效果,但保留缓冲区内容(这很方便)


您可以将以下代码添加到
m-shell-mode
hook:

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

您可以将以下代码添加到
m-shell-mode
hook:

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

如果
m-shell-mode
基于
comint mode
,这在许多提供shell与另一个进程交互的模式中都是如此,那么您可以通过
return
键将函数
comint send input
传递到matlab。在这种情况下,以下代码应该执行您想要的操作:

(取消清除并返回()
擦除缓冲区,然后将返回传递到缓冲区进程。
假定缓冲区已附加到comint进程。“
(互动)
(擦除缓冲区)
(通信发送输入)
(卸下my-m-shell-mode-hook()
(本地设置键(kbd“C-l”)‘清除并返回))
(添加钩子'm-shell-mode-hook'my-m-shell-mode-hook)
第一个defun生成一个函数,它可以实现您想要的功能。第二个是钩子函数,它将
C-l
绑定到调用该函数时处于活动状态的缓冲区的该函数。
addhook
告诉emacs在启动
m-shell-mode
时运行第二个函数。您可以在
my-m-shell-mode
的主体中添加更多的m-shell-mode自定义项,每次启动模式时,Emacs都将运行所有这些自定义项


如果
m-shell-mode
不是基于
comint mode
,则需要了解按
return
时发生的情况。在运行该模式的缓冲区中,键入
C-h k RET
查找绑定到返回键的函数。使用该函数,而不是上面代码中的
comint send input

如果
m-shell-mode
基于
comint mode
,这在提供shell与另一个进程交互的许多模式中都是如此,那么您可以将
return
键与函数
comint send input
一起传递给matlab。在这种情况下,以下代码应该执行您想要的操作:

(取消清除并返回()
擦除缓冲区,然后将返回传递到缓冲区进程。
假定缓冲区已附加到comint进程。“
(互动)
(擦除缓冲区)
(通信发送输入)
(卸下my-m-shell-mode-hook()
(本地设置键(kbd“C-l”)‘清除并返回))
(添加钩子'm-shell-mode-hook'my-m-shell-mode-hook)
第一个defun生成一个函数,它可以实现您想要的功能。第二个是钩子函数,它将
C-l
绑定到调用该函数时处于活动状态的缓冲区的该函数。
addhook
告诉emacs在启动
m-shell-mode
时运行第二个函数。您可以在
my-m-shell-mode
的主体中添加更多的m-shell-mode自定义项,每次启动模式时,Emacs都将运行所有这些自定义项


如果
m-shell-mode
不是基于
comint mode
,则需要了解按
return
时发生的情况。在运行该模式的缓冲区中,键入
C-h k RET
查找绑定到返回键的函数。使用该功能,而不是上面代码中的
comint send input

的确切意思是
m-shell-mode
,它是一个MATLAB终端。我是否也可以模拟按ENTER键?基本上,
erase buffer
将清除MATLAB命令窗口;点击输入会带来<代码> > /Cuff>提示(我知道它在那里,但我想它是一个视觉的东西)。“Dang-KoA膝关节炎,你可能想试试另一种绑定。@ TreyJackson,什么是shell清除命令?我在我的Emacs(24..94.1)或google中看不到这一点。@泰勒,对不起,我忘了这是我自己炮制的东西,我已经更新了答案。确切的意思是
m-shell-mode
,它是一个MATLAB终端。我是否也可以模拟按ENTER键?基本上,
erase buffer
将清除MATLAB命令窗口;点击输入会带来<代码> > /Cuff>提示(我知道它在那里,但我想它是一个视觉的东西)。“Dang-KoA膝关节炎,你可能想试试另一种绑定。@ TreyJackson,什么是shell清除命令?我在我的Emacs(24..94.1)或谷歌中看不到这一点。@Tyler抱歉,我忘了这是我自己炮制的东西,我已经更新了答案。