【问题标题】:emacs split into 3 even windowsemacs 分成 3 个偶数窗口
【发布时间】:2011-02-04 08:45:17
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: emacs


    【解决方案1】:

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

    C-u 字符数 C-x 3

    【讨论】:

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

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

    【讨论】:

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

    我的.emacs 中有以下内容:

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

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

    【讨论】:

    • 感谢您,但我不确定您是否需要致电 (ad-activate ...),因为您将 activate 包含在单独的表单中。
    【解决方案4】:

    添加.emacs。我映射到 C-x 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。
    【解决方案5】:
    (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个窗口,你可以输入“C-u 3 M-x wenshan-split-window-vertical”来实现你想要的。

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

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

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

        【讨论】:

          【解决方案8】:

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

          【讨论】:

            【解决方案9】:

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

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-02-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多