在emacs中的最后两个缓冲区之间来回切换

时间:2013-03-02 04:26:53

标签: emacs elisp

我想在最后两个访问缓冲区(当前一个和前一个缓冲区)之间来回切换,并将命令绑​​定到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)

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

3 个答案:

答案 0 :(得分:4)

您的代码看起来非常好,似乎可以在我的emacs会话中使用。

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

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

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

我总是以这种方式定义我的键绑定,因为我倾向于忘记如何正确理解?\ C-#无论名称是什么。

使用kbd非常简单,因为它接受的字符串与decribe-key通常绑定到C-h C-k的字符串相同。

这样我只需输入C-h C-k,以防我不知道密钥是如何标记的,并将此命令的输出放入我对kbd的调用中。特别是在看起来不明显如何正确kbd非常有用的情况下,它甚至适用于更复杂的名称(kbd "<backtab>")等。

答案 1 :(得分:3)

好的,首先要避免重新绑定M-b,因为它的单词向后,并且保持默认绑定并学习它们对您有用,这样您就可以在配置时使用Emacs不可用,比如在遥控盒或其他不熟悉的网站上。 (我知道这些日子的可能性可能会减少。)另一个更相关的原因是它是bash / readline的默认键绑定,可以在更多的地方使用,而不是我提到的

如果您使用的是Windows框,我建议将Windows密钥绑定到 hyper super ,以便您可以获得更多范围的密钥绑定没有删除默认值。

在Mac上,对 Cmd 执行相同的操作(虽然它已经绑定到 super ,并且已经绑定了一堆mac特定键。)

最后,总是重新映射 Caps-Lock ,即使你没有将它用于很多人使用的 Ctrl 替换,这是你可以重新调整的另一个修饰符并且在Emacs中经常使用(实际上,当M-lM-uM-c可用时,绝不需要使用大写锁定。) - 一旦你有 hyper super 你可以轻松获得另外一百个绑定作为 modifier + key 样式的快捷方式。

此外,我知道这是一个巨大的麻烦,但C-x b 输入将切换到上一个缓冲区。

答案 2 :(得分:2)

BTW上面的lisp代码不起作用(有时它会带你到另一个不同于前一个缓冲区的缓冲区)。 Emacs具有执行此任务的内置功能: mode-line-other-buffer