switch buffer to other window

C-x 4 b 关联 switch buffer to other window 假如emacs已经打开了4个窗口,且光标在第一个窗口,那么它将在第2或3或4中选择一个窗口用新的buffer替换掉原来的buffer

我的问题是在2或3或4窗口中,如何确定被选择的窗口

window list

需要了解 Emacs 是如何显示 Buffer 的,基本上指函数 display-buffer。反正我一直就没搞明白,印象中实现的代码复杂,文档也不清楚。刚刚我看了下,默认情况下,C-x 4 b 优先使用:

  1. 过去显示过这个 Buffer 的 Window
  2. 最近使用过的 Window

你得看代码来了解完整的优先级。

我用C-h v 查看过switch-buffer-to-other-window发现根window list有关,只不过没看懂:sweat_smile:

看具体代码,对于我这种初学者有点难,看不懂,嘿嘿 就先把问题放一放吧

另一个思路是自己写个wrapper function,它:

  • 让你选择要去到的window(推荐ace-window)
  • switch-to-buffer

另另一个思路是试试别的操作方法,比如用winum,按下M-3一键切到window No.3,然后switch-to-buffer