在Vim中快速从垂直分割切换到水平分割

Léo*_* 준영 575 vim split

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

我偶然做到了,但我再也找不到钥匙了.

Mar*_*off 860

Vim邮件列表说(重新格式化以获得更好的可读性):

要将两个垂直分割的窗口更改为水平分割

Ctrl- w t Ctrl-w K

水平到垂直:

Ctrl- w t Ctrl-w H

说明:

Ctrl- w t 使第一个(topleft)窗口 成为当前窗口Ctrl- w K将当前窗口移动到最顶部的全宽度 Ctrl- w H 将当前窗口移动到最左边的全高度

请注意,t是小写的,K和H是大写的.

此外,只有两个窗口,似乎你可以放弃Ctrl- w t部分,因为如果你已经只在两个窗口之一,那么它是什么意思?

  • 因此,如果你有两个水平分割的窗口,并且你在下窗口,你只需使用^ WL. (26认同)
  • ......权力......今天我的vim-fu加倍了,谢谢.有很多有趣的^ w命令(b,w等) (7认同)
  • @Eno对我来说很好.只需在"旋转"分割之前切换NERDTree面板,然后将其切换回打开状态.:NERDTreeToggle(为方便起见,我将它映射到一个功能键). (3认同)
  • 我在我的vim配置中添加了一些引导映射:`:nmap <leader> th <Cw> t <Cw> H`和`:nmap <leader> tk <Cw> t <Cw> K` (2认同)

res*_*ode 301

Ctrl- w其次H,J,KL(大写)将当前窗口移动到远left,bottom,topright分别像正常光标导航.

小写等效项移动焦点而不是移动窗口.

  • 接受的答案很好,但对我来说,这个答案更容易记住.谢谢! (25认同)
  • 因为用户使用hjkl在缓冲区之间移动,所以它要好得多. (3认同)

Ste*_*eve 42

当您有两个或多个水平或垂直打开的窗口并希望将它们全部切换到另一个方向时,您可以使用以下方法:

(切换到水平)

:windo wincmd K
Run Code Online (Sandbox Code Playgroud)

(切换到垂直)

:windo wincmd H
Run Code Online (Sandbox Code Playgroud)

它有效地单独使用每个窗口并使用^WK^WH.


Mar*_*ark 30

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

  • 要垂直分割(例如在窗口之间制作垂直分隔线),请键入 :vertical ball
  • 要水平拆分,请键入 :ball

如果存在隐藏缓冲区,则发出这些命令也会使隐藏缓冲区可见.


Ano*_*non 27

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

:帮助打开窗口

例如:

Ctrl- W s
Ctrl- W o
Ctrl- W v
Ctrl- W o
Ctrl- W s
......


Ser*_*ndt 8

水平到垂直拆分

Ctrl+ W用于窗口命令,后跟Shift+ HShift+L


垂直至水平分割

Ctrl+ W用于窗口命令,后跟Shift+ KShift+J

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


Ada*_*yna 6

受史蒂夫(Steve)答案的启发,我编写了一个简单的函数,该函数可在当前选项卡中所有窗口的垂直和水平拆分之间切换。您可以将其绑定到映射,如下面的最后一行所示。

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>
Run Code Online (Sandbox Code Playgroud)


Jab*_*bba 5

继马克Rushakoff的尖上面,这里是我的映射:

" 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
Run Code Online (Sandbox Code Playgroud)

编辑:使用Ctrl- w r交换两个窗口,如果他们不是良好的顺序.