如何自动切换到 Emacs 中的发生缓冲区?

Håk*_*and 2 emacs elisp

当在occur正则表达式上运行时,框架分成两个窗口,occur缓冲区如下所示。但是,键盘焦点仍在原始缓冲区中。如何以编程方式更改此行为,使occur缓冲区成为当前缓冲区?我试过这个:

(defun test-occur ()
  (interactive)
  (occur "test")
  (switch-to-buffer "*Occur*"))
Run Code Online (Sandbox Code Playgroud)

但它不起作用..(即:现在occur缓冲区同时显示在顶部和底部窗口中)

sds*_*sds 5

您不必为此定义单独的函数。只需添加一个钩子:

(add-hook 'occur-hook (lambda () (other-window 1)))
Run Code Online (Sandbox Code Playgroud)

或者,并且可能更可靠:

(add-hook 'occur-hook (lambda () (switch-to-buffer-other-window "*Occur*")))
Run Code Online (Sandbox Code Playgroud)