如何改变分割屏幕 Emacs 窗口的大小?

我有 emacs 水平分割-在顶部我正在编辑 Perl 代码,底部是 shell。默认情况下,emacs 使两个窗口的大小相等,但我希望 shell 缓冲区更小(也许只有一半大小?).我在想我该怎么做。

65151 次浏览

C-x o到要展开其大小的窗口。从那里,C-x ^展开它。

使用鼠标可以拖动窗口大小。

单击模式线上其他地方没有“活动”的任何位置(缓冲区名称是安全的,或者右边任何未使用的区域) ,然后可以向上或向下拖动。

侧对侧拖动需要在两条模式线连接的位置进行非常精确的单击。

C-x -(shrink-window-if-larger-than-buffer)将缩小窗口以适应其内容。

C-x +(balance-windows)将使窗户具有相同的高度和宽度。

C-x ^(enlarge-window)将高度增加1行,即前缀 arg 值。否定参数缩小窗口。例如,C —— C-1 C-6 C-X ^收缩16行,C-u - 1 ^0 C-X ^收缩16行。

(shrink-window没有默认绑定。)

C-x }(enlarge-window-horizontally)在水平方向上也是如此。
默认情况下,C-x {(shrink-window-horizontally)也是绑定的。

使用 repeat(启动时使用 C-X Z,继续重复使用 Z)遵循其中一个命令可以非常容易地得到您想要的确切大小。

如果您经常希望使用特定的值执行此操作,那么您可以录制一个键盘宏来执行此操作,或者使用类似
(global-set-key (kbd "C-c v") (kbd "C-u - 1 6 C-x ^"))

或者这样:
(global-set-key (kbd "C-c v") (kbd "C-x o C-x 2 C-x 0 C-u - 1 C-x o"))

这有点粗俗,所以这样更好:

(defun halve-other-window-height ()
"Expand current window to use half of the other window's lines."
(interactive)
(enlarge-window (/ (window-height (next-window)) 2)))


(global-set-key (kbd "C-c v") 'halve-other-window-height)

顺便说一句,我也喜欢 winner-mode,它可以让你重复“撤销”任何对 C-C 左边窗口配置的改变(不管改变是窗口的大小/数量/排列,还是只是显示哪个缓冲区)。C-C 返回最新的配置。使用 (winner-mode 1)全局设置它

我把这些放在我的 .emacs:

(global-set-key (kbd "<C-up>") 'shrink-window)
(global-set-key (kbd "<C-down>") 'enlarge-window)
(global-set-key (kbd "<C-left>") 'shrink-window-horizontally)
(global-set-key (kbd "<C-right>") 'enlarge-window-horizontally)

C-x ^采用正的 还有负的数值参数。特别是,如果您希望将光标当前所在的窗口缩小四行,则可以按 C-u -4 C-x ^

我也有同样的问题,这是我的解决办法。
首先,我定义一个新函数:

(defun buffer-resize ()
(delete-other-windows)
(split-window-vertically (floor (* 0.68 (window-height))))
(other-window 1)
(switch-to-buffer buf)
(other-window 1))

例如,我想在缓冲区中运行-scheme,所以我重写了它。
下面是定义,前面定义了函数:

(defun run-scheme-here ()
"Run a new scheme process at the directory of the current buffer.
If a process is already running, switch to its buffer."
(interactive)
(let* ((proc (format "scheme: %s" default-directory))
(buf (format "*%s*" proc)))
(unless (comint-check-proc buf)
(let ((cmd (split-string scheme-program-name)))
(set-buffer
(apply 'make-comint-in-buffer proc buf (car cmd) nil (cdr cmd)))
(inferior-scheme-mode)
(buffer-resize)))
(pop-to-buffer buf)))

所以现在当我输入: M-x run-scheme-here 时,缓冲区的大小被调整了!
这里是我的配置文件,希望能有所帮助。 < a href = “ https://github.com/judevc/dotfiles/blob/master/.emacs.d/scheme-conf.el”rel = “ nofollow”> https://github.com/judevc/dotfiles/blob/master/.emacs.d/scheme-conf.el

让我们尝试使用 emacs 帮助文档。

C-h < kbd > a

然后输入“放大”或“窗口”

你会找到你想要的。

好好享受吧!

这不是您要寻找的确切答案,但是我在查找 spacemacs中的功能时偶然发现了这个问题,所以为了完整起见,我将写下我的答案。

这个选项是使用 <SPC> + w + .(它在普通的 space emacs 中工作)

这将打开一个临时窗口,可以使用 []{}在粒度级别调整大小。

不需要 C-X 或者慕斯。

Window manipulation transient state