如何更改分屏emacs窗口的大小?

Ste*_*eve 166 size emacs split screen

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

phi*_*ils 286

使用鼠标,您可以拖动窗口大小.

单击模式行上没有"活动"的任何位置(缓冲区名称是安全的,或右侧任何未使用的区域),您可以向上或向下拖动.

左右拖动需要在两条模式线连接的位置进行非常精确的单击.

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

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

C-x ^(enlarge-window)将高度增加1行,或前缀arg值.负arg收缩窗口.例如,C-- C-1 C-6 C-x ^收缩16行C-u - 1 6 C-x ^.

(没有默认绑定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"))

哪个是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 "C-c v") 'halve-other-window-height)
Run Code Online (Sandbox Code Playgroud)

切线,我也很喜欢winner-mode,它允许你反复"撤消"对窗口配置的任何更改C-c left(无论更改是窗口的大小/数量/排列,还是显示哪个缓冲区).C-c right返回最近的配置.全局设置它(winner-mode 1)

  • 太棒了,正是我想要的!非常感谢! (3认同)

wil*_*ibi 34

我把这些放在我的.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)
Run Code Online (Sandbox Code Playgroud)


小智 14

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

C-h a

然后输入"放大"或"窗口"

你会找到你想要的.

请享用!


vpi*_*833 6

C-x o到您想要扩展的大小的窗口.从那里,C-x ^扩大它.

  • 如果绑定不同(我的是),命令是`enlarge-window`.另一个提示是使用前缀arg来控制扩展量. (3认同)

jus*_*npc 6

C-x ^采取正面负面的数字论证.特别是,如果您想缩小光标当前所在的窗口四行,可以按C-u -4 C-x ^.


Yes*_*esh 5

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

选项是使用<SPC> + w + .(它适用于 vanilla spacemacs)

这会打开一个瞬态窗口,您可以使用该窗口在[]{}粒度级别调整大小。

不需要 Cx 或鼠标...

窗口操作瞬态