【问题标题】:How do I rearrange a split pane in Emacs?如何在 Emacs 中重新排列拆分窗格?
【发布时间】:2014-09-26 18:00:10
【问题描述】:

在 Vim 中,我可以移动拆分。例如,如果我的窗口被水平分割成两部分,最顶部的分割是垂直分割(总共 3 个分割),我可以将右上角的分割向右移动以成为占据整个垂直空间的垂直分割。

这种重新排列可能吗?

更新:我知道调整大小是可能的,但我正在寻找移动。我感觉 Emacs 不支持这个。

【问题讨论】:

    标签: emacs


    【解决方案1】:

    如果您有超过 2 个窗口,您可能会对 C-x + 感兴趣。它同样重新排列框架上的窗口。例如,当您连续执行两个 C-x 2 并希望窗口占据框架上的相同空间时,这很方便。

    【讨论】:

      【解决方案2】:

      不,默认情况下不是。您必须使用的基本上是C-x 0C-x 1 等。在Emacs Wiki 中查找可能会或可能不会做您正在寻找的扩展。

      【讨论】:

      • 这正是我所需要的:我曾使用 C-x 3 来获得垂直窗口拆分,然后鼠标单击右侧窗口并打开一个外壳。但不知何故,窗口内容被交换了。 C-x 0 关闭其中一个窗口而不关闭关联的缓冲区。所以我可以重新创建拆分,单击到我想要的窗口,然后在该窗口中打开我想要的缓冲区。
      【解决方案3】:

      FWIW,如果您在 GUI 中运行,那么您可以使用鼠标快速轻松地精确地重新排列窗口大小。这与您要求的不太一样,但在某些情况下可能是一个方便的选择。

      您可以单击模式行的任何非“活动”区域(例如缓冲区名称),然后将其向上或向下拖动。

      左右拖动更加繁琐。您必须单击两条模式线之间的确切边界,然后才能向左/向右拖动。

      对于您的具体示例,我认为不支持。 AFAIK 您只能在其现有的“父”窗口中重新组织窗口拆分(本示例中的上部拆分)。要使右上角的窗口填充垂直空间,您可以使用 C-x 0 删除底部窗口,或使用 C-x 1 删除所有其他窗口,然后重新以所需的方式拆分它们。

      (实际上,我经常认为拥有一个自定义库来“旋转”窗口拆分会是一件好事。)

      【讨论】:

      • 那个自定义库正是我要找的!
      • 我看到emacswiki.org/emacs/TransposeFrame 确实做到了这一点,甚至更多。很棒。
      • 或者如该页面所述,如果您安装了 nxhtml,则您已经有 M-x winsav-rotate 可用。
      【解决方案4】:

      我相信窗口调整大小命令内置于window.el,从emacswiki,您想要记录的功能是:

      shrink-window-horizontally  ; C-x {
      enlarge-window-horizontally ; C-x }
      enlarge-window              ; C-x ^
      shrink-window               ; not bound on my system
      

      cmets 是它们在我的系统上绑定的,但我不知道是不是我自己这样做的。

      它们都带有一个前缀参数,即放大/缩小的行数。最后两个默认为垂直。

      【讨论】:

      • Ja 不是要调整大小,而是要重新排列
      【解决方案5】:

      据我所知,您无法从已经沿该方向拆分的窗口创建一个运行屏幕长度或宽度的新窗口。如果您关闭窗口,缓冲区将保持打开状态,因此您可以删除窗口,然后将它们拆分为您想要的配置。然后通过按 C-x 左箭头或右箭头更改在您所在的窗口中显示的缓冲区。

      我应该补充一点,这个答案是关于“香草”emacs,如果你真的想要的话,可能有一种方法可以做 OP 询问的事情。毕竟是emacs。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-18
        • 2020-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多