emacs 切换到上次活动 window?

emacs switch to last active window?

我想知道 Emacs lisp 中是否有一种方法可以跳回上次活动的 window,就像 popd 在 Linux 中所做的那样?

我问的原因是在某些评估代码的环境中(例如babel-repl),一旦启动REPL,源代码的编辑区域就会失去对REPL的关注。我想改变它的行为并将焦点切换回编辑区域,例如,通过在 elisp 中添加一个额外的命令以在启动 REPL 之前跳回到最后一个活动 window。

previous-windowget-mru-window 应该做你想做的。然后您可以使用

切换
(select-window (previous-window))

如果您只想切换活动缓冲区,可以使用:

(defun prev-window ()
  (interactive)
  (other-window -1))
(global-set-key [(f12)] 'prev-window)

(global-set-key "\C-cp" 'prev-window)
(global-set-key "\C-cn" 'other-window)

我的 ~/.emacs 文件中有这个。 CTRL+C 然后 p (或 F12)到转到上一个缓冲区。 CTRL+C 然后 n 转到下一个缓冲区。函数 other-buffer 可以让你重新访问上次访问的缓冲区。通过提供一个负数,您可以反转它通过缓冲区列表的顺序。