繁体   English   中英

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

[英]To switch from vertical split to horizontal split fast in Vim

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

我刚才不小心这样做了,但我再也找不到钥匙了。

Vim 邮件列表说(重新格式化以提高可读性):

两个垂直拆分的窗口更改为水平拆分

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部分,因为如果您已经在仅有的两个窗口之一中,那么将其设为当前有什么意义?

Ctrl - w后跟HJKL (大写)会将当前窗口分别移动到最leftbottomtopright就像正常的光标导航一样。

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

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

(切换到水平)

:windo wincmd K

(切换到垂直)

:windo wincmd H

它有效地单独进入每个窗口并使用^W K^W H

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

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

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

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

:help 打开窗口

例如:

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

水平到垂直分割

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


垂直到水平拆分

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

当仅存在两个窗口时,这两种解决方案都适用。


默认情况下以垂直拆分方式打开帮助

将这两行添加到.vimrc

cabbrev help vert help
cabbrev h vert h

:vert[ical] {cmd}始终在垂直拆分的窗口中执行cmd

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

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>

按照上面Mark 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

编辑:如果两个窗口的顺序不正确,请使用Ctrl - w r来交换它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM