代码之家  ›  专栏  ›  技术社区  ›  Léo Léopold Hertz 준영

在VIM中快速从垂直拆分切换到水平拆分

  •  547
  • Léo Léopold Hertz 준영  · 技术社区  · 15 年前

    如何在VIM中将当前窗口从水平拆分切换为垂直拆分,反之亦然?

    我刚才不小心弄到的,但我再也找不到钥匙了。

    8 回复  |  直到 6 年前
        1
  •  818
  •   Endre Both    9 年前

    Vim mailing list 说(重新格式化以提高可读性):

    改变 垂直拆分 要水平拆分的窗口

    Ctrl键 - W T Ctrl键 - W K

    从水平到垂直:

    Ctrl键 - W T Ctrl键 - W H

    说明:

    Ctrl键 - W T 使第一个(左上角)窗口成为当前窗口 Ctrl键 - W K 将当前窗口移到最上面的全宽 Ctrl键 - W H 将当前窗口移到最左边的全高

    注意t是小写的,k和h是大写的。

    而且,只有两个窗口,你似乎可以放下 Ctrl键 - W T 部分是因为如果你已经在两个窗口中的一个,那么让它流行起来有什么意义呢?

        2
  •  275
  •   Sebastián Palma    6 年前

    Ctrl键 - W 然后 H , J , K L (大写)将当前窗口移到远处 left ,请 bottom , top right 分别像普通的光标导航。

    小写等价物移动焦点而不是移动窗口。

        3
  •  39
  •   Steve    10 年前

    当你有两个 或更多 窗口水平或垂直打开,希望切换它们 全部的 对于其他方向,可以使用以下选项:

    (切换到水平)

    :windo wincmd K
    

    (切换到垂直)

    :windo wincmd H
    

    它可以有效地单独到每个窗口并使用 ^ w K ^ w H .

        4
  •  28
  •   Mark    10 年前

    以下ex命令将(重新)拆分任意数量的窗口:

    • 要垂直拆分(例如在窗口之间创建垂直分隔符),请键入 :vertical ball
    • 要水平拆分,请键入 :ball

    如果有隐藏的缓冲区,发出这些命令也会使隐藏的缓冲区可见。

        5
  •  27
  •   Hulk1991 moinudin    11 年前

    在VIM中,查看以下内容,以了解您可能做过的不同选择:

    :帮助打开窗口

    例如:

    Ctrl键 - W S
    Ctrl键 - W o
    Ctrl键 - W V
    Ctrl键 - W o
    Ctrl键 - W S

        6
  •  5
  •   Community pid    7 年前

    跟随马克·拉沙科夫的提示 above ,这是我的地图:

    " vertical to horizontal ( | -> -- )
    noremap <c-w>-  <c-w>t<c-w>K
    " horizontal to vertical ( -- -> | )
    noremap <c-w>\|  <c-w>t<c-w>H
    noremap <c-w>\  <c-w>t<c-w>H
    noremap <c-w>/  <c-w>t<c-w>H
    

    编辑: 使用 Ctrl键 - W R 如果两个窗口的顺序不好,就交换它们。

        7
  •  2
  •   Navidot    7 年前

    受Steve Answer的启发,我编写了一个简单的函数,可以在当前选项卡中所有窗口的垂直和水平拆分之间切换。您可以像下面最后一行那样将它绑定到映射。

    function! ToggleWindowHorizontalVerticalSplit()
      if !exists('t:splitType')
        let t:splitType = 'vertical'
      endif
    
      if t:splitType == 'vertical' " is vertical switch to horizontal
        windo wincmd K
        let t:splitType = 'horizontal'
    
      else " is horizontal switch to vertical
        windo wincmd H
        let t:splitType = 'vertical'
      endif
    endfunction
    
    nnoremap <silent> <leader>wt :call ToggleWindowHorizontalVerticalSplit()<cr>
    
        8
  •  2
  •   Serge Stroobandt    6 年前

    水平到垂直拆分

    Ctrl键 + W 紧随其后 换档 + H 轮班 + L


    垂直到水平拆分

    Ctrl键 + W ,然后是 换档 + K 轮班 + J

    当只有两个窗口时,两种解决方案都适用。