每当我在emacs中执行apropos,describe-key或其他一些帮助功能时,它会在我的其他窗口中显示帮助。为了摆脱它,我必须更改窗口/缓冲区去那里,键入" q",然后更改回原来的工作缓冲区。
我能以某种方式在代码中执行此操作吗?我知道如何保存 - 游览,切换缓冲区等,但我不知道如何发送" q"当我在另一个缓冲区中时,到迷你缓冲区/ emacs。感谢
答案 0 :(得分:5)
help-window-select
变量可能正是您想要的。
如果将其值设置为true (setq help-window-select t)
,则当您通过其中一个帮助命令打开帮助窗口时,将自动选择该窗口。然后,您可以按q
退出,然后返回原始缓冲区。还有很多其他选项,所以你也应该检查一下。
对于apropos窗口或使用display-buffer
的任何窗口,您都可以使用。
(add-to-list 'display-buffer-alist
'("*Apropos*" display-buffer-same-window))
display-buffer-same-window
是众多选择之一;它在当前窗口中打开缓冲区。通过在display-buffer
函数上查找文档,可以看到其他可能的选项。
答案 1 :(得分:1)
这是我对这个问题的解决方案。我将此命令绑定到C-c q
:
(defvar my/help-window-names
'(
;; Ubiquitous help buffers
"*Help*"
"*Apropos*"
"*Messages*"
"*Completions*"
;; Other general buffers
"*Command History*"
"*Compile-Log*"
"*disabled command*")
"Names of buffers that `my/quit-help-windows' should quit.")
(defun my/quit-help-windows (&optional kill frame)
"Quit all windows with help-like buffers.
Call `quit-windows-on' for every buffer named in
`my/help-windows-name'. The optional parameters KILL and FRAME
are just as in `quit-windows-on', except FRAME defaults to t (so
that only windows on the selected frame are considered).
Note that a nil value for FRAME cannot be distinguished from an
omitted parameter and will be ignored; use some other value if
you want to quit windows on all frames."
(interactive)
(let ((frame (or frame t)))
(dolist (name my/help-window-names)
(ignore-errors
(quit-windows-on name kill frame)))))
答案 2 :(得分:0)
我建议将(winner-mode 1)
放入您的初始文件中,然后使用 Cc < left> 来调用winner-undo
(如有必要,请重复)返回上一个窗口配置。