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

在emacs中的最后两个缓冲区之间来回切换,emacs,elisp,Emacs,Elisp,我想在最后两个访问的缓冲区(当前缓冲区和前一个缓冲区)之间来回切换,并将命令绑定到M-b (切换到缓冲区(其他缓冲区))理论上应该可以做到这一点,但将以下代码添加到我的.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-o

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

(切换到缓冲区(其他缓冲区))
理论上应该可以做到这一点,但将以下代码添加到我的
.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)

请建议对上面的代码进行修复或以更好的方式完成此任务。

您的代码看起来很好,似乎在我的emacs会话中正常工作

您确定
[M-b]
语法吗

如果这是问题所在,您可能希望使用
kbd
函数来确定组合键的正确拼写方式

(global-set-key (kbd "M-b") 'my-switch-to-other-buffer)
我总是这样定义我的键绑定,因为我往往忘记了如何正确地定义?\C-#只要名称正确

使用
kbd
非常简单,因为它接受一个与
decribe键
通常绑定到
C-hc-k
的语法相同的字符串


这样,我只需键入
C-hc-k
,以防我不知道该键是如何标记的,并将此命令的输出放入我对
kbd
的调用中。特别是在似乎不清楚如何正确使用的情况下,
kbd
非常有用,它甚至可以用于更复杂的名称
(kbd“”)
等等。

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

如果您使用的是windows box,我建议您将windows密钥绑定到hyper或super,这样您就可以在不删除默认值的情况下获得一系列额外的密钥绑定

在mac上,对Cmd执行相同的操作(尽管它已经绑定到super,并且已经绑定了一堆mac特定的密钥)

最后,始终重新映射Caps Lock,即使您不使用它来替换许多人使用的Ctrl键,它也是另一个修改器,您可以在Emacs中重新调整用途并更频繁地使用它(实际上,当有
M-l
M-u
M-c
可用时,根本不需要使用Caps Lock)-一旦你有了hyper和super,你就可以轻松地获得另外一百个绑定,作为修改器+键样式的快捷方式


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

顺便说一句,上面的lisp代码不起作用(有时它会将您带到与上一个不同的另一个缓冲区)。Emacs有一个内置功能来执行此任务:模式行其他缓冲区

太好了,kbd使其工作。我错误地认为
[…]
也接受了
描述键
的语法。莱克斯·弗里德曼:向量等价物是
[?\M-b]
(参见
C-hig(elisp)键序列RET
)<代码>kbd确实更简单。@LexFridman@phils
[(meta b)]
也可以工作,在我看来,它是最可读的密钥描述格式。虽然现在我每天都使用
kbd
format.IMHO,但在现代,它是默认的emacs键绑定,正在破坏使用外部应用程序的一般工作流。在不停地使用了很长时间之后,我无数次地打开了3个新文件试图向下移动光标(C-n),并在我真正意识到发生了什么之前打开了4个打印对话框(C-p)。回顾过去,如果我能尽早更改emacs绑定,我会很高兴的,现在我仍然坚持使用它们。尽管如此,+1破坏一些最基本的键绑定可能不是最好的主意。@Solomojo哦,顺便说一句,我相信使用hyper super之类的东西也不是太坏,但是如果你倾向于在终端中使用emacs,就像我所做的那样,这些绑定将不可用。甚至不可能区分C-i和TAB,C-m和RET,因为它们都是send^i和^m。在这里,我想我的答案是针对Lex的。我列出了一些活动(确切地说是4项),我在编程时在Emacs中反复做过。对于那些人,我决定把便利放在任何其他考虑之上。[M-b]对我来说是最简单的捷径。我用的是运动键盘。所以,我认为你的观点是关于不干扰基本Emacs键绑定的。但有时我必须遵循内心而不是大脑;-)@LexFridman为反馈喝彩,最终Emacs应该是你想要的和需要的,我的答案应该用“如果你喜欢这种方式”——我断断续续地使用Emacs已经有几十年了,在过去的5年左右,我已经改掉了一些习惯,拥抱了平台的全部力量。其中一个强大的功能是,它的一些内置绑定在许多其他平台上无处不在。这就是为什么我建议使用
hyper
&
super
绑定到任何可以让你得到更多的东西,同时让它与默认值保持一致。