2

在 emacs 中是否有退出模式并返回上一个模式的键绑定?例如,假设我使用以下命令进入了行号模式:

Alt+x linum-mode

如何快速禁用此模式并返回到之前的模式(不再使用相同的命令)?

4

4 回答 4

3

为什么不想再次使用相同的命令?

M-xM-pRET

没有比这更简单的了。

编辑:您可以按该顺序重复M-p以进一步退回命令历史记录,并且可以使用搜索命令历史记录M-xC-r

此外,当您禁用次要模式时,您不会“返回到之前的模式”;您只是禁用了同时处于活动状态的一种(许多)次要模式。

切线地,“返回到以前的模式”的概念可以适用于主要模式(因为给定缓冲区中只有一个活动的主要模式),但严格来说,没有“禁用”主要模式的概念 -仅“启用”您希望更改为的模式 - 因此要在两种主要模式之间“切换”,您需要交替调用它们。

于 2013-10-19T21:39:56.780 回答
1

只需重复相同的命令:M-x linum-mode. 这种次要模式命令是切换:开/关。

于 2013-10-19T21:40:59.977 回答
0

一个解决方案可能遵循kill-ring-save有效的路径:将处于活动状态的模式作为当前模式列表存储在先前模式环中。

为此所需的代码基本上存在于内部describe-mode,从“启用的次要模式”向上查看 - 分别用于主要模式。

然后一个钩子应该检查this-command它的名字中是否有“-mode”。如果是,请检查当前模式列表是否等于先前模式环的汽车。如果没有,请添加新设置。

最后编写一个命令,根据从 previous-modes-ring 中选择的列表设置当前模式。

于 2013-10-20T14:15:16.600 回答
0

C-x z呼叫repeat- 重复上一个命令。反复调用次要模式启用/禁用它。

另一种方法是使用smex: 你调用的最后一个命令M-x有点坚持。因此,您可以使用 启用linum-modesmex使用常用快捷方式进行大量编辑,然后linum-mode使用 禁用M-x RET

于 2013-10-19T21:36:23.547 回答