关于emacs自动乱split窗口的问题?

我现在的Emacs配置有一个很严重的问题,就是没当Emacs split窗口时,它的位置通常不符预期。

举个例子:

考虑你正在编辑一个源文件A,然后在当前文件下使用projectile-grep。Emacs会在下部弹出一个结果窗口,你选择其中一个条目。

此时,Emacs会在当前窗口(源文件A)的右边split出一个新窗口,这不符合我的预期。我的预期是希望新窗口开在当前窗口上(也就是覆盖源文件A。考虑到我装了tab-bar,意味着应该是在当前源文件A上再tab出一个窗口来,而不是split出一个新窗口。注:一般的编辑器的行为都是和我说的一样,比如UltraEdit)

当然,projectile-grep只是我遇到的Emacs split窗口问题中的一个。

还有很多其他问题与之相关的问题,我这里再举几个使用场景:

  1. 我在用racket-mode编程时,按F5后,希望在下方弹出一个repl窗口,但Emacs总是在右边弹出窗口。。。(每次我都要手动调,非常不方便)

  2. 使用dired的时候,他弹出一个文件列表窗口。如果你用键盘选择,则列表会在当前窗口里变化,如果用鼠标选择,则会打开新窗口。。。

那么究竟应该怎么调教Emacs窗口?

求大牛赐教,多谢~~

1 个赞
C-h f display-buffer
C-h v display-buffer-alist

比如加上这个配置:

(add-to-list 'display-buffer-alist
             `(".*"
               (display-buffer-reuse-window display-buffer-same-window)))
(add-to-list 'display-buffer-alist
             `(".*magit.*"
               (display-buffer-pop-up-window)))

效果就是除了 magit, 大部分 buffer 显示时都是使用当前的窗口(不 split)

1 个赞

谢谢

问题是我用了这个配置之后,projectile-grep不会在底下弹出窗口了,而是覆盖整个窗口。。。。

看看 split-height-thresholdsplit-width-threshold 变量的设置,是不是你的窗口比较宽?

额…需要自己按需要修改下, 我给的只是个例子

用shackle啊

purpose也挺好的

正好有这个需求,谢谢了!

如何指定一个窗口显示grep 的buffer,点击文件链接,也在指定的窗口显示,这怎样做呢?