如何在vim中翻转窗口?

可能重复:
在Vim中从垂直分割切换到水平分割

如果我有2个水平分割窗口,如何旋转它们以获得2个垂直分割窗口?

而如何切换缓冲区?

如果你有他们垂直分裂Cw J移动到底部

如果你把它们水平分割,把它向右移动一个

要在分割窗口的“列”或“行”中旋转,

以下命令可用于更改窗口布局。 例如,当有两个垂直分割窗口时,CTRL-W K将在水平分割窗口中改变它。 CTRL-W H反其道而行之。

按下Ctrl- H或键入:wincmd H水平走向垂直布局。

Ctrl-w J或键入:wincmd J垂直走向水平布局。

按Ctrl-w或键入:wincmd r 交换两个缓冲区,但保持窗口布局相同。

按住Ctrl键或键入:wincmd w 将光标在两个窗口/缓冲区之间移动

您可能希望绑定一个或多个这些序列,以便更快地input。 我把它放在我的.vimrc中,所以我把光标移动到当前选项卡中的下一个缓冲区:

 let mapleader = "," nmap <Leader>l <Cw>w 

CTRLW SHIFTH将旋转方向, CTRLW H移动到左侧窗口, CTRLW L移动到右侧。 看到

 :帮助分裂

 :帮助^ w

了解更多信息。

如果你只有两个窗口打开,目前的答案很好。 如果你有更多的事情,移动窗口的逻辑可能会变得毛茸茸的。

我在我的.vimrc中允许我“抽出”和“删除”缓冲区,然后将其粘贴到当前缓冲区的窗口或作为[v]分割。

 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>