emacs分为3个偶数窗口


78

快速提问:如何在分割窗口中指定字符数?Cx-3将我的窗口平均分成两个窗口,但是随后的分割会将其中一个窗口分成两半。我想要3个大小相等的窗户。该文档说,我应该能够将左侧缓冲区的字符数指定为参数,但是我似乎无法使其正常工作。对语法有任何想法吗?

谢谢。

Answers:


24

要指定拆分窗口中的字符数,请执行以下操作:

字符数Cx 3


窗口宽度太小(拆分后)
Mittenchops 2013年

5
问题是它不能使窗口均匀,而是手动设置宽度,因此您必须计算emacs窗口要均匀调整大小的宽度和高度。下面的答案更有用。
leinaD_natipaC 2013年

22
C-x +使它们均匀分布
Josh.F,2013年

1
投票减少,因为手动调整大小。我不想计算终端高度并将其除以
3。– byxor

这回答了问题,但乔希。F的评论和Josh Matthews的回答是大多数人想要的。
扎克


15

我的内容如下.emacs

(defadvice split-window-horizontally (after rebalance-windows activate)
  (balance-windows))
(ad-activate 'split-window-horizontally)

每次调整大小后,都会进行emacs调用rebalance-windowsC-x +默认情况下绑定)。这不是我一直想要的,但是比默认行为要多得多。


谢谢您,但是(ad-activate ...)由于您包含activate在单独的表格中,因此我不确定您是否需要致电。
wpcarro

12

加入.emacs。我映射到Cx 4,但是有人有更好的主意吗?

(defun split-3-windows-horizontally-evenly ()
  (interactive)
  (command-execute 'split-window-horizontally)
  (command-execute 'split-window-horizontally)
  (command-execute 'balance-windows)
)

(global-set-key (kbd "C-x 4") 'split-3-windows-horizontally-evenly)

5
我不会将其分配给C-x 4。这是一堆其他命令的默认前缀。请参阅C-x 4 C-h(显然,未设置绑定)。
phils

3
这些年来,@ phils whoa我一直不知道该如何获取带有一些通用前缀的命令列表……我喜欢emacs。
mgalgs 2012年

4
(defun wenshan-split-window-vertical (&optional wenshan-number)
"Split the current window into `wenshan-number' windows"
  (interactive "P")
  (setq wenshan-number (if wenshan-number
                           (prefix-numeric-value wenshan-number)
                         2))
  (while (> wenshan-number 1)
    (split-window-right)
    (setq wenshan-number (- wenshan-number 1)))
  (balance-windows))

此功能可用于将当前窗口拆分为N个窗口,您可以键入“ Cu 3 Mx wenshan-split-window-vertical”来实现所需的功能。



1

我喜欢@quodlibetor的解决方案,但是它不能按书面要求工作。这对我有用(emacs 24.5)

(advice-add 'split-window-right :after #'balance-windows)

0

其中的许多使用该回答的问题,balance-windows这里是他们可能不会允许窗口拆分因window-min-width或者split-width-threshold即使一切都会重新平衡后的罚款。例如,我不希望窗口宽度小于100个字符,但是如果我分割了屏幕,则会得到两个160个字符宽度的窗口,并且如果不调整其中一个窗口的大小就无法再次分割。我还没有弄清楚如何确定拆分是否合适,所以我可能会在拆分时将这些值动态绑定到0,并可能window-configuration-to-register事先做以防万一,以便我可以在事情进展时恢复旧的布局。错误。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.