我想在最后两个访问缓冲区(当前一个和前一个缓冲区)之间来回切换,并将命令绑定到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)
请建议修复上面的代码或更好的方法来完成此任务。
答案 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-l
,M-u
和M-c
可用时,绝不需要使用大写锁定。) - 一旦你有 hyper 和 super 你可以轻松获得另外一百个绑定作为 modifier + key 样式的快捷方式。
此外,我知道这是一个巨大的麻烦,但C-x b
输入将切换到上一个缓冲区。
答案 2 :(得分:2)
BTW上面的lisp代码不起作用(有时它会带你到另一个不同于前一个缓冲区的缓冲区)。 Emacs具有执行此任务的内置功能: mode-line-other-buffer