Vim:向左/向右移动窗口?

时间:2010-12-29 17:16:43

标签: vim

在Vim中,是否可以向左或向右“移动”窗口?例如,类似于<c-w> r<c-w> x,但是左/右而不是上/下?

例如,如果我有这个布局:

+---+---+---+
|   |   +---+
| A +---+---+
|   |   |   |
+---+---+---+

我想把它变成这个:

+---+---+---+
|   |   +---+
+---+ A +---+
|   |   |   |
+---+---+---+

使用<c-w> {H,J,K,L}很困难/烦恼。

5 个答案:

答案 0 :(得分:380)

Ctrl W 为您提供“Windows命令模式”,允许以下修饰符:

  • Ctrl W + R - 向上/向左旋转窗口。

  • Ctrl W + r - 向下/向右旋转窗口。

您还可以使用带有导航键的“Windows命令模式”来更改窗口的位置:

  • Ctrl W + L - 将当前窗口移动到“最右边”< / p>

  • Ctrl W + H - 将当前窗口移动到“最左边”< / p>

  • Ctrl W + J - 将当前窗口移动到“非常底部”< / p>

  • Ctrl W + K - 将当前窗口移动到“非常顶部”< / p>

查看:help window-moving了解详情

答案 1 :(得分:45)

这个对我来说最有用(可能是问题的正确答案):

  • Ctrl W + x Ctrl W + Ctrl x - 使用最近的窗口旋转当前的焦点窗口。

答案 2 :(得分:7)

您想要移动窗口本身还是仅移动光标位置?

除了您已经提到的旋转或骑行之外,只能将窗口本身移动到顶部,底部,左侧或右侧,分别为:

^W K
^W J
^W H
^W L

我认为没有一种默认的内置方式可以将窗口向右移动一个位置。

答案 3 :(得分:0)

看起来vim似乎不能用标准键映射来做到这一点。文档说^ WK,J,H和L命令通过创建拆分并在当前位置打开缓冲区来工作,所以我写了一个相同的函数:隐藏缓冲区,向左移动,拆分,然后打开原始缓冲区:

" Rotate a window horizontally to the left
function! RotateLeft()
    let l:curbuf = bufnr('%')
    hide
    wincmd h
    split
    exe 'buf' l:curbuf
endfunc

" Rotate a window horizontally to the right
function! RotateRight()
    let l:curbuf = bufnr('%')
    hide
    wincmd l
    split
    exe 'buf' l:curbuf
endfunc

答案 4 :(得分:-4)

  • ctrl + h将光标移动到下一个窗口(右)

  • ctrl + l将光标移动到上一个窗口(左)

有关详情,请参阅::help window-moving