【问题标题】:Vim: Move window left/right?Vim:向左/向右移动窗口?
【发布时间】:2011-06-01 04:02:26
【问题描述】:

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

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

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

我想把它变成这样:

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

<c-w> {H,J,K,L} 很难/烦人。

【问题讨论】:

    标签: vim


    【解决方案1】:

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

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

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

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

    • Ctrl w + L - 将当前窗口移动到“最右边”

    • Ctrl w + H - 将当前窗口移动到“最左边”

    • Ctrl w + J - 将当前窗口移动到“最底部”

    • Ctrl w + K - 将当前窗口移动到“最顶端”

    查看:help window-moving了解更多信息

    【讨论】:

    • <c-w> r 只能垂直旋转。
    • @David Wolever,在这种情况下,您需要使用大写字母,例如:Ctrl-W + Shift-L。我认为这可能是您正在寻找的。​​span>
    • @David - 刚刚对此进行了测试, r 为我横向工作。
    • @ostler.c 创建垂直拆分,然后在其中一列中创建水平拆分。现在使用 r,它只在一个垂直分割中循环两个窗口。
    • @nn0p 不,他们移动窗口。 h 将光标移动到左边的下一个窗口,而 H 将当前窗口(连同光标)移动到最左边。
    【解决方案2】:

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

    • Ctrl W + xCtrl W kbd> + Ctrl x - 将当前焦点窗口旋转到右边最近的窗口。

    【讨论】:

    • 当您在窗格中间并想与右侧的窗格交换时非常有用。谢谢这个!
    【解决方案3】:

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

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

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

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

    【讨论】:

    • 我想移动窗口,而不是光标。
    • 那么这就是你可以使用 vim 窗口命令的极限了,如果这对你有用,请将其标记为解决方案 :-)
    • 如果可以的话,我会否决@Bitterzoet 的评论。见以上答案
    【解决方案4】:

    似乎 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
    

    【讨论】:

      【解决方案5】:
      • ctrl + h将光标移动到下一个窗口(右)

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

      更多信息请参考::help window-moving

      【讨论】:

      • 不正确。 Ctrl+h/l 不是窗口导航的标准绑定(尽管它们当然可以配置,并且由某些插件提供)。无论如何,这并不能回答最初的问题。
      猜你喜欢
      • 1970-01-01
      • 2013-08-13
      • 1970-01-01
      • 1970-01-01
      • 2018-06-11
      • 1970-01-01
      • 1970-01-01
      • 2013-09-01
      • 1970-01-01
      相关资源
      最近更新 更多