我们可以使用(split-window-sensibly)
函数将窗口分成上下两部分,然后使用(other-window 1)
函数切换到下一个窗口。接下来,我们可以使用(with-selected-window)
函数在另一个窗口中运行(man)
命令。
下面是实现这个功能的ELisp代码示例:
(defun my-man-in-other-window (topic)
"Open man page for TOPIC in another window."
(interactive "sTopic: ")
(let ((buf (get-buffer-create "*Man*")))
(split-window-sensibly)
(other-window 1)
(with-selected-window (selected-window)
(progn
(switch-to-buffer buf)
(setq default-directory "/")
(setq-local Man-notify-method 'pushy)
(Man-mode)
(Man-getpage-in-background topic)))))
(global-set-key "\C-cm" 'my-man-in-other-window)
在这个例子中,我们首先定义了一个名为my-man-in-other-window
的函数,它接受一个参数topic
表示要查看的man页主题。然后,我们定义了一个名为buf
的缓冲区,在此函数中我们使用它来显示man页。
接下来,我们使用(split-window-sensibly)
函数将当前窗口分成两个部分(上下),并使用(other-window 1)
函数将焦点切换到下一个窗口。现在我们已经处于新窗口中,我们可以使用(with-selected-window)
函数在这个窗口中执行代码。在这个例子中,我们首先使用(switch-to-buffer)
函数将buf
缓冲区设置为当前缓冲区,并使用(setq)
函数为default-directory
和Man-notify-method
设置一些默认值。接着,我们使用(Man-mode)
函数打开Man模式,并使用(Man-getpage-in-background)
函数查找指定的man页。
最后,我们使用(global-set-key)
函数将函数绑定到键盘快捷键C-c m
上,以便更方便地使用此功能。