【发布时间】:2014-03-02 20:19:21
【问题描述】:
我想自定义在 Emacs 中拆分窗口时的行为:
我总是拆分,因为我想与我当前正在编辑的缓冲区并排查看一个单独的缓冲区。
我使用electric-buffer-list(绑定到C-x C-b)来导航缓冲区。
我最终分别做以下所有事情:
C-x 3 水平分割。
C-x o 切换到另一个窗口。
C-x C-b 调用
electric-buffer-list,这样我就可以选择要查看的缓冲区。
似乎我应该能够编写一个 Elisp 函数,当我按下 C-x 3 时它会完成所有这些操作。
我发现 this post 描述了我想要的行为的焦点切换部分,但我不明白如何扩展该答案以实现我想要做的所有事情。
编辑:在查看了@lawlist 的帖子并调试了我的语法之后,我想我想做这样的事情:
(defun split-right-and-buffer-list ()
(interactive)
(split-window-horizontally)
(other-window 0)
(electric-buffer-list 0))
(global-set-key (kbd "C-x 3") 'split-right-and-buffer-list)
这可以满足我的所有需求,除了出现的缓冲区列表仅列出当前缓冲区,而不是当我从其键绑定调用 electric-buffer-list 时获得的所有缓冲区的正常列表。
【问题讨论】:
-
这是一个类似的线程,我修改了
split-window-below——你可以创建自己的水平分割函数:stackoverflow.com/a/19300409/2112489你不必使用defalias——也就是说,你可以通过名称调用您自己修改后的函数。在你想要的窗口中,你可以使用switch-to-buffer——在我们使用select-window . . .的窗口之间移动 -
这些链接中的任何一个怎么样,它在拆分窗口中显示标准缓冲区列表 - 如果您愿意,可以修改示例以显示不同类型的缓冲区列表。此链接为左或右拆分示例:stackoverflow.com/a/21544307/2112489 此链接为以下拆分示例:stackoverflow.com/a/21591259/2112489