2

我想在最后两个访问的缓冲区(当前一个和前一个)之间来回切换并将命令绑​​定到M-b.

(switch-to-buffer (other-buffer))理论上应该可以做到这一点,但是将以下代码添加到我.emacs的没有效果。

(defun my-switch-to-other-buffer ()
  "Switch to other buffer"
  (interactive)
  (switch-to-buffer (other-buffer)))

(global-set-key [M-b] 'my-switch-to-other-buffer)

请建议修复上述代码或完成此任务的更好方法。

4

3 回答 3

4

您的代码看起来很不错,似乎可以在我的 emacs 会话中使用。

你确定[M-b]语法吗?

如果这是您可能想要使用该kbd功能来确定拼写组合键的正确方法的问题。

(global-set-key (kbd "M-b") 'my-switch-to-other-buffer)

我总是以这种方式定义我的键绑定,因为我倾向于忘记如何正确地使用 ?\C-#whatever 获得正确的名称。

使用kbd它非常简单,因为它接受一个与decribe-key通常绑定到C-h C-k.

这样我只需要输入C-h C-k以防我不知道键是如何标记的,并将这个命令的输出放在我对kbd. 尤其是在似乎不太明显如何正确使用它的情况下,它甚至可以使用更复杂的名称等kbd非常有用。(kbd "<backtab>")

于 2013-03-02T04:37:12.013 回答
3

好的,首先避免重新绑定M-b,因为它是反向的,维护默认绑定并学习它们对您很有用,这样您就可以在配置不可用时使用 Emacs,比如在遥控器上框或其他一些不熟悉的站点。(我知道这些天这种可能性可能正在减少。)另一个更相关的原因是它是bash/上的默认键绑定,readline它在比我不想提及的更多地方可用。

如果您使用的是 windows 框,我建议您将 windows 键绑定到hyperorsuper以便您可以在不消除默认值的情况下获得一整套额外的键绑定。

在 mac 上,对Cmd(虽然它已经绑定到super,并且已经绑定了一堆 mac 特定键) 做同样的事情。

Caps-Lock最后,即使您不使用它来替换很多人使用的替换,也要始终重新映射Ctrl,它是另一个修饰符,您可以在 Emacs 中重新调整用途并更频繁地使用(真的,当有M-l,M-u并且M-c可用。) - 一旦你得到hyper并且super你很容易得到另外一百个绑定作为modifier+key样式快捷方式。

另外,我知道这很麻烦,但C-x b enter会切换到以前的缓冲区。

于 2013-03-02T20:21:38.353 回答
3

顺便说一句,上面的 lisp 代码不起作用(有时它会将您带到与前一个不同的另一个缓冲区)。Emacs 有一个内置函数来执行这个任务:mode-line-other-buffer

于 2016-01-26T11:35:49.260 回答