如何定义键绑定以在 emacs 中的次要模式之间切换?
Posted
技术标签:
【中文标题】如何定义键绑定以在 emacs 中的次要模式之间切换?【英文标题】:How to define keybinding to toggle between minor modes in emacs? 【发布时间】:2013-12-29 04:59:57 【问题描述】:编辑:从 cmets 中,我了解到 org-mode 不是次要模式。所以这个问题与 org-mode 无关。但如果有人想在 emacs 中切换黑白次要模式,这将很有用。
我在缓冲区操作时必须经常切换到 org-mode,我懒得打字
M-x org-mode
一直都是。
有没有办法可以在我的 init.el 文件中指定一个键绑定来切换缓冲区的模式?我想使用类似 F12
的东西【问题讨论】:
出于好奇,您的 org 文件需要使用哪些其他主要模式? 另外,正如已经指出的那样,org-mode 不是次要模式。您需要编辑您的问题,使标题和正文相互一致。 @phils 我经常手动打开的其他模式是 linum-mode、font-lock(用于语法突出显示)等。我发现我对主要/次要模式的了解是部分的。我会再看一遍手册。 【参考方案1】:你可以使用类似的东西
(defvar previous-major-mode nil)
(make-variable-buffer-local 'previous-major-mode)
(put 'previous-major-mode 'permanent-local t)
(defun toggle-org-mode ()
(interactive)
(cond
(previous-major-mode
(call-interactively previous-major-mode)
(setq previous-major-mode nil))
(t
(setq previous-major-mode major-mode)
(call-interactively 'org-mode))))
(global-set-key (kbd "<f12>") #'toggle-org-mode)
但是如果你经常需要这个,这是一个很好的迹象,表明你做错了,并且可能误解了主要模式的概念。
【讨论】:
【参考方案2】:(global-set-key (kbd "<f12>") 'org-mode)
应该可以解决问题。
【讨论】:
这不会在组织模式设置后切换。一旦启用 org-mode,我就无法将其关闭。 嗯。约定是调用次要模式函数来切换:不过,org-mode
似乎并非如此。我去看看。
嗯,看来org-mode
不是次要模式。因此,您将无法切换它。以上是关于如何定义键绑定以在 emacs 中的次要模式之间切换?的主要内容,如果未能解决你的问题,请参考以下文章