在Vim中,是否可以向左或向右“移动”窗口?例如,类似于<c-w> r
或<c-w> x
,但是左/右而不是上/下?
例如,如果我有这个布局:
+---+---+---+
| | +---+
| A +---+---+
| | | |
+---+---+---+
我想把它变成这个:
+---+---+---+
| | +---+
+---+ A +---+
| | | |
+---+---+---+
使用<c-w> {H,J,K,L}
很困难/烦恼。
答案 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)
这个对我来说最有用(可能是问题的正确答案):
答案 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