如果您将它们垂直分割,使用C-wJ可以将一个窗口移动到底部
如果您将它们水平分割,使用C-wL可以将一个窗口向右移动
要在拆分窗口的“列”或“行”中进行旋转,使用C-wC-r
以下命令可用于更改窗口布局。例如,在有两个垂直分割的窗口中,CTRL-W K会将其更改为水平分割窗口。CTRL-W H则反之。
wincmd
:http://vimdoc.sourceforge.net/htmldoc/windows.html#:wincmd - sehe:help CTRL-W_K
帮助我在阅读键绑定的描述后记住了这些键绑定的作用。 - Dylan Landry按下Ctrl-w H或输入:wincmd H
,可以从水平布局转换为垂直布局。
按下Ctrl-w J或输入:wincmd J
,可以从垂直布局转换为水平布局。
按下Ctrl-w r或输入:wincmd r
,可以交换两个缓冲区但保持窗口布局不变。
按下Ctrl-w w或输入:wincmd w
,可以在两个窗口/缓冲区之间移动光标。
您可能希望绑定其中一个或多个序列,以使输入更快。我将其放入我的.vimrc文件中,这样,l就可以将光标移到当前选项卡中的下一个缓冲区。
let mapleader = ","
nmap <Leader>l <C-w>w
Ctrl-w
r
是最好的! - gabeCTRL-W SHIFT-H将旋转窗口方向,CTRL-W H将移动到左侧窗口,CTRL-W L将移动到右侧窗口,请参见:
:help split
和
:help ^w
获取更多信息。
如果您只打开两个窗口,则当前的回答都非常有效。如果您打开的窗口超过两个,则移动窗口的逻辑可能会变得复杂。
我在我的 .vimrc 文件中使用以下内容,可以让我将一个缓冲区“复制”或“删除”,然后将其粘贴到当前缓冲区上方的窗口或作为[v]split分屏窗口。
fu! PasteWindow(direction) "{{{
if exists("g:yanked_buffer")
if a:direction == 'edit'
let temp_buffer = bufnr('%')
endif
exec a:direction . " +buffer" . g:yanked_buffer
if a:direction == 'edit'
let g:yanked_buffer = temp_buffer
endif
endif
endf "}}}
"yank/paste buffers
:nmap <silent> <leader>wy :let g:yanked_buffer=bufnr('%')<cr>
:nmap <silent> <leader>wd :let g:yanked_buffer=bufnr('%')<cr>:q<cr>
:nmap <silent> <leader>wp :call PasteWindow('edit')<cr>
:nmap <silent> <leader>ws :call PasteWindow('split')<cr>
:nmap <silent> <leader>wv :call PasteWindow('vsplit')<cr>
:nmap <silent> <leader>wt :call PasteWindow('tabnew')<cr>
C-W J
和其他命令好多了。我会用<leader>wP
扩展到top split
,并用<leader>wV
扩展到:set nosplitright \| call PasteWindow('vsplit') \| set splitright<cr>
。而且<leader>wr
比<leader>we
更有意义('replace')。 - zelk