如何改变拆分屏幕emacs窗口的大小?

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

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

点击模式行上不是“活动”的任何地方(缓冲区名称是安全的,或右侧有任何未使用的区域),然后向上或向下拖动。

左右拖动需要非常精确地点击两条模式线join的地点。

Cx -shrink-window-if-larger-than-buffer )会缩小窗口以适合其内容。

Cx +balance-windows )将使窗口具有相同的高度和宽度。

Cx ^enlarge-window )将高度增加1行或前缀参数值。 一个负面的arg缩小窗口。 例如C-C-1 C-6 Cx 16收缩16行, Cu - 16Cx +也收缩。

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

Cx }enlarge-window-horizontally )同样水平。
Cx {shrink-window-horizontally )也是默认绑定的。

按照这些命令中的一个repeatCx z启动,只需z继续重复),可以很容易地达到您想要的确切大小。

如果你经常想用特定的值来做这件事,你可以录制一个键盘macros来做,或者使用类似的东西
(global-set-key (kbd "Cc v") (kbd "Cu - 1 6 Cx ^"))

或这个:
(global-set-key (kbd "Cc v") (kbd "Cx o Cx 2 Cx 0 Cu - 1 Cx o"))

这是一个smidgen hacky,所以这会更好:

 (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 "Cc v") 'halve-other-window-height) 

切线方面,我也喜欢winner-mode ,它允许您重复“撤消” Cc 左侧窗口configuration的任何更改(无论更改是窗口的大小/数量/排列还是只显示哪个缓冲区)。 抄送 返回到最近的configuration。 (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) 

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

Ch a

然后input“放大”或“窗口”

你会find你想要的。

请享用!

Cx o到您想要扩展的窗口。 从那里, Cx ^扩展它。

Cx ^采取正面负面的数字参数。 特别是,如果您想缩小当前光标所在的窗口四行,可以按Cu -4 Cx ^

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

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

例如,我想在缓冲区中运行,所以我重写它。
这里是定义,用前面定义的函数:

 (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))) 

所以现在当我input:Mx run-scheme-here,缓冲区被resize!
这是我的configuration文件,希望这会有所帮助。 https://github.com/judevc/dotfiles/blob/master/.emacs.d/scheme-conf.el