在 emacs 中是否有退出模式并返回上一个模式的键绑定?例如,假设我使用以下命令进入了行号模式:
Alt+x linum-mode
如何快速禁用此模式并返回到之前的模式(不再使用相同的命令)?
在 emacs 中是否有退出模式并返回上一个模式的键绑定?例如,假设我使用以下命令进入了行号模式:
Alt+x linum-mode
如何快速禁用此模式并返回到之前的模式(不再使用相同的命令)?
为什么不想再次使用相同的命令?
M-xM-pRET
没有比这更简单的了。
编辑:您可以按该顺序重复M-p以进一步退回命令历史记录,并且可以使用搜索命令历史记录M-xC-r。
此外,当您禁用次要模式时,您不会“返回到之前的模式”;您只是禁用了同时处于活动状态的一种(许多)次要模式。
切线地,“返回到以前的模式”的概念可以适用于主要模式(因为给定缓冲区中只有一个活动的主要模式),但严格来说,没有“禁用”主要模式的概念 -仅“启用”您希望更改为的模式 - 因此要在两种主要模式之间“切换”,您需要交替调用它们。
只需重复相同的命令:M-x linum-mode
. 这种次要模式命令是切换:开/关。
一个解决方案可能遵循kill-ring-save
有效的路径:将处于活动状态的模式作为当前模式列表存储在先前模式环中。
为此所需的代码基本上存在于内部describe-mode
,从“启用的次要模式”向上查看 - 分别用于主要模式。
然后一个钩子应该检查this-command
它的名字中是否有“-mode”。如果是,请检查当前模式列表是否等于先前模式环的汽车。如果没有,请添加新设置。
最后编写一个命令,根据从 previous-modes-ring 中选择的列表设置当前模式。
C-x z呼叫repeat
- 重复上一个命令。反复调用次要模式启用/禁用它。
另一种方法是使用smex
: 你调用的最后一个命令M-x有点坚持。因此,您可以使用 启用linum-mode
,smex
使用常用快捷方式进行大量编辑,然后linum-mode
使用
禁用M-x RET。