快速提问:如何指定拆分窗口中的字符数? Cx-3 将我的窗口平均分成两个窗口,但随后的拆分会将其中一个窗口分成两半。我想要 3 个大小相同的窗户。文档说我应该能够将左缓冲区的字符数指定为参数,但我似乎无法让它工作。对语法有什么想法吗?
谢谢。
C-x 3
两次后跟 C-x +
以使所有窗口大小相等。
要指定拆分窗口中的字符数,请执行以下操作:
Cu 字符数 Cx 3
C-x +
使它们均匀分布
我的 .emacs
中有以下内容:
(defadvice split-window-horizontally (after rebalance-windows activate)
(balance-windows))
(ad-activate 'split-window-horizontally)
这使得 emacs 在每次调整大小后都会调用 rebalance-windows
(这是 C-x +
默认绑定的)。这不是我一直想要的,但我想要它比默认行为更频繁。
(ad-activate ...)
,因为您将 activate
包含在单独的表单中。
(defadvice split-window-right (after rebalance-windows activate) (balance-windows))
添加.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)
C-x 4
。这是一堆其他命令的默认前缀。请参阅 C-x 4 C-h
(显然没有设置绑定)。
(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”来实现你想要的。
如果你使用 evil 做 C-x 3
然后 C-w =
我喜欢@quodlibetor 的解决方案,但它并没有像写的那样工作。这对我有用(emacs 24.5)
(advice-add 'split-window-right :after #'balance-windows)
此处使用 balance-windows
的许多答案的问题之一是,即使重新平衡后一切正常,它们也可能不允许由于 window-min-width
或 split-width-threshold
而拆分窗口。例如,我不希望窗口宽度小于 100 个字符,但是如果我拆分屏幕后,我得到两个宽度为 160 个字符的窗口,并且如果不调整其中一个窗口的大小就无法再次拆分。我还没有弄清楚如何确定拆分是否良好,所以我可能只是在拆分时将这些值动态绑定到 0,并且可能事先做一个 window-configuration-to-register
以防万一,以便我可以恢复旧布局当事情出错时。
这是我的解决方案,希望对您有所帮助:
(defun split-vertical-evenly ()
(interactive)
(command-execute 'split-window-vertically)
(command-execute 'balance-windows))
(global-set-key (kbd "C-x 2") 'split-vertical-evenly)
(defun split-horizontal-evenly ()
(interactive)
(command-execute 'split-window-horizontally)
(command-execute 'balance-windows))
(global-set-key (kbd "C-x 3") 'split-horizontal-evenly)
不定期副业成功案例分享
C-x 3 C-x 3 C-x +
?C-x 2 C-x +
用于水平分割(适用于垂直显示器)