ChatGPT解决这个技术问题 Extra ChatGPT

emacs 分成 3 个偶数窗口

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

谢谢。


k
kjhughes

C-x 3 两次后跟 C-x + 以使所有窗口大小相等。


有没有办法让 Emacs 用一个命令立即创建三个大小相同的窗口,而不是执行 C-x 3 C-x 3 C-x +
@sabrewolfy 制作一个宏
C-x 2 C-x + 用于水平分割(适用于垂直显示器)
多年来摆弄“drag-mouse-1:resize”。我们漫长的噩梦结束了。
N
Nikwin

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

Cu 字符数 Cx 3


窗口宽度太小(拆分后)
问题是它不能使窗口均匀,这是手动设置宽度,所以你必须计算 emacs 窗口有多少字符宽和高才能均匀地调整它们的大小。下面的答案更有用。
C-x + 使它们均匀分布
由于手动调整大小而被否决。我不想计算我的终端高度并将其除以 3。
这回答了问题,但乔希。 F 的评论和 Josh Matthews 的回答是大多数人想要的。
q
quodlibetor

我的 .emacs 中有以下内容:

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

这使得 emacs 在每次调整大小后都会调用 rebalance-windows(这是 C-x + 默认绑定的)。这不是我一直想要的,但我想要它比默认行为更频繁。


谢谢您,但我不确定您是否需要调用 (ad-activate ...),因为您将 activate 包含在单独的表单中。
我将 Cx 3 用于右拆分窗口,这在没有广告激活的情况下对我有用:(defadvice split-window-right (after rebalance-windows activate) (balance-windows))
D
David J.

添加.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(显然没有设置绑定)。
@phils 哇这么多年过去了,我从来不知道如何获取带有一些通用前缀的命令列表......我喜欢 emacs。
W
Wenshan
(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”来实现你想要的。


e
endre

如果你使用 evilC-x 3 然后 C-w =


i
ianxm

我喜欢@quodlibetor 的解决方案,但它并没有像写的那样工作。这对我有用(emacs 24.5)

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

D
Dave Abrahams

此处使用 balance-windows 的许多答案的问题之一是,即使重新平衡后一切正常,它们也可能不允许由于 window-min-widthsplit-width-threshold 而拆分窗口。例如,我不希望窗口宽度小于 100 个字符,但是如果我拆分屏幕后,我得到两个宽度为 160 个字符的窗口,并且如果不调整其中一个窗口的大小就无法再次拆分。我还没有弄清楚如何确定拆分是否良好,所以我可能只是在拆分时将这些值动态绑定到 0,并且可能事先做一个 window-configuration-to-register 以防万一,以便我可以恢复旧布局当事情出错时。


y
yaoya

这是我的解决方案,希望对您有所帮助:

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

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅